-
1、数据类型
es5的数据类型:Number、String、 Underfined 、Null 、Boolean 、Object
引用数据类型包括 Object、Array、Function
es6新增数据类型:Symbol -
2、什么是基本数据类型、引用数据类型
基本数据类型指的是简单的数据段,而引用数据类型指那些可能由多个值构成的对象;
引用类型的值是保存在内存中的对象,对Javascript来说,不能直接访问内存的位置。在操作对象时,实际时操作对象的引用而不是实际的对象,为此,引用类型是按引用访问的。 -
3、探讨复制变量值的影响
3.1 、基本数据类型
<script>
var num1 = 123;
var num2 = num1;
console.log(num2); //123
num1 = 'liujie'
console.log(num1); //liujie
console.log(num2); //123
</script>
如果从一个变量(num1)向另一个变量(num2)复制基本数据类型的值,会在变量对象上创建一个新值,然后为将值赋给新分配的位置上。,两个变量相互独立,不互相影响。
3.2、 引用数据类型
下面这个,变量obj1保存了一个对象的新实例,然后将它的值复制到了obj2中,因为这两个变量都指向同一个对象,这样,当为obj2添加name属性时,可以通过obj1.name访问,下面图中展示了保存在变量对象中的变量及保存在堆中的对象之间的关系。两者互相影响了。
var obj1 = new Object();
obj2 = obj1;
obj2.name = 'Niolas'
console.log(obj2.name);
console.log(obj1.name);
- 4、检测数据类型
4.1、typeof
typeof能检测一个变量是否是基本数据类型,也就是说 String、Number、Boolean、Underfined。type一般用来检测基本数据类型,但是检测引用类型时该操作符用处不大。
有点不同的是,typeof null是Object,typeof null也是Object
console.log(typeof 1); //number
console.log(typeof '1'); //string
console.log(typeof [1, 2, 3]); //object
num = null
console.log(typeof null); //object
num1 = NaN
console.log(typeof num1); // number
num2 = true
console.log(typeof num2); //boolean
var num3 = new Object();
console.log(typeof num3); //object
var num3 = function() {
}
console.log(typeof num3); //function
4.2、instanceof
通常我们想知道某个值是什么类型的对象时,typeof不再适用。下面例子可以看出,在检测引用类型值和Object构造函数时,均返回true,但instanceof 基本数据类型时都返回false。
console.log(1 instanceof Number); //f
console.log('1'
instanceof String); //f
console.log([1, 2, 3] instanceof Object); //t
num = null
console.log(null instanceof Object); //false
num1 = NaN
console.log(num1 instanceof Number); //false
num2 = true
console.log(num2 instanceof Boolean); //f
var num3 = new Object();
console.log(num3 instanceof Object); //t
var num3 = function() {
}
console.log(num3 instanceof Function); //t