数据类型总结——概述
相关文章
简书原文:https://www.jianshu.com/p/8056305801dc
数据类型总结——概述:https://www.cnblogs.com/shcrk/p/9266015.html
数据类型总结——String(字符串类型):https://www.cnblogs.com/shcrk/p/9277107.html
数据类型总结——Number(数值类型):https://www.cnblogs.com/shcrk/p/9277040.html
数据类型总结——Boolean类型(布尔类型):https://www.cnblogs.com/shcrk/p/9265597.html
数据类型总结——null和undefined:https://www.cnblogs.com/shcrk/p/9266100.html
数据类型总结——基本包装类型:https://www.cnblogs.com/shcrk/p/9266066.html
数据类型总结——Array(数组类型):https://www.cnblogs.com/shcrk/p/9276989.html
大纲
前言
1、关于类型声明
2、关于强类型和弱类型
3、关于数据类型
4、关于数据类型的引用类型
5、基本数据类型和引用数据类型的比较
前言
数据类型是每一种语言都需要掌握的内容,掌握每一种数据类型的使用是掌握这门语言必不可少的。而我也对数据类型写了一系列的博客,其中包含了对某一数据类型的概念的认识和理解以及常使用的方法。以下是我对JavaScript这门语言的数据类型的总体认识和理解,希望能对读者有所帮助。
1、关于类型声明
有些程序设计语言要求程序员在声明变量的同时还必须明确地对其数据类型做出声明,这种做法称为类型声明(typing)。但是在JavaScript脚本中为他们做出声明和进行赋值的语法无任何区别。
2、关于强类型和弱类型
要求程序员必须明确地对数据类型做出声明的程序设计语言被称为强类型(strongly typed)语言。像JavaScript这样不要求程序员进行类型声明的语言则称为弱类型(weakly typed)。所谓弱类型以为这程序员可以随意更改某个变量的数据类型。
3、关于数据类型
1、ECMAScript由五种简单数据类型(也称为基本数据类型):Undefined、Null、Boolean、Number、String。
2、一种复杂数据类型:Object,Object实际上是由一组无序的名值对组成的。
3、ECMAScript不支持任何自定义类型的机制,而最终所有值都将是上述的六种数据类型之一。
4、关于数据类型的引用类型
1、引用类型的值(对象)是引用类型的一个实例。
2、引用类型也可称为对象定义,因为它们描述的是一类对象所具有的属性和方法,虽然引用类型与类看起来相似,但它们不是相同的概念。
3、尽管ECMAScript从技术上讲是一门面向对象的语言,但它不具备传统的面向对象语言所支持的类和接口等基本结构。
5、基本数据类型和引用数据类型的比较
1、ECMAScript中包含两种不同类型的值:基本类型和引用类型。
2、在将一个值赋给变量时,解析器必须确定这个值是基本类型还是引用类型的值。
3、基本数据类型的值是保存在栈中,有5种基本数据类型:Undefined、Null、Boolean、Number、String,这5种基本数据类型是按值访问的,因为可以操作保存在变量中的实际的值。
4、引用类型的值是保存在内存中的对象。与其他对象不同,JavaScript不允许直接访问内存中的位置,也就是说不能直接操作对象的内存空间。在操作对象时,实际上是在操作对象的引用而不是实际对象。为此,引用类型的值是按引用访问的。对象是直接保存在堆中的,变量中保存的是对象的引用,也就是对象的地址,这个变量的值保存在栈中。操作对象实际上是通过变量操作保存在变量中的对象的引用。
5、定义基本类型值和引用类型值的方式是类似的。
/* 定义基本类型值和引用类型值的方式是类似的:创建一个变量并为该变量赋值。但是当这 个值保存到变量中以后,对不同类型可以执行的操作则大相径庭。对于引用类型的值,我们可以 为其添加属性和方法,也可以改变和删除其属性和方法。而基本类型的值则不行。 */ //引用类型 var person = new Object(); person.name = "Nicholas"; console.log(person.name);//Nicholas //基本类型 var name = "Nicholas";; name.age = 27; console.log(name.age);//undefined
6、不同数据类型之间的复制。基本类型的值的复制是值的复制,复制之后的两个变量是完全独立的两个变量,可以独自参与任何操作而不受任何影响。但是对象的复制是引用的复制,也就是将地址也就是对象的引用复制给变量,两个不同的变量指向的对象是同一个。(其中涉及到了深拷贝和浅拷贝的问题,具体可以参考本人的另一篇博客:JavaScript的深拷贝和浅拷贝)