[JS中的六大数据类型]
js中有六种数据类型,包括五种基本数据类型(Number,String,Boolean,Undefined,Null),和一种复杂数据类型(Object)。
typeof 关键字是用来检测当前变量的数据类型的方法
typeof null //Object
typeof { } //Object
typeof [ ] //Object
typeof console.log() //Function
null类型进行typeof操作符后,结果是object,原因在于,null类型被当做一个空对象引用。
1.Object类型
object类型分为3种
1,对象
2,数组
3,函数
关于对象可以有两种创建方式。
第一种
var person = new Object();
person.age = 18;
第二种方式是使用对象字面量表示法,如下所示
var person = {
age : 18
};
2.Array类型
数组类型
创建数组的基本方式有两种
第一种是使用Array构造函数
var colors = new Array("red","blue","yellow");
第二种是使用数组字面量
var colors = ["red","blue","yellow"];
3 Function类型
函数类型
function sum(num1,num2){
return num1 + num2;//结果返回给sun变量了
};
也就是说,js按照存储方式分为值类型和引用类型。那么他们的计算有什么区别呢?
题目1:
var a = 100;
var b = a;
a = 200;
console.log (b);
题目2:
var a = {age : 20};
var b = a;
b.age = 21;
console.log (a.age);
题目1的答案是 100,题目2的答案是21,
题目1是简单的值类型,在从一个变量向另一个变量赋值基本类型时,会在该变量上创建一个新值,然后把新值赋给被赋值变量的新地址空间上。
此时,a中保存的值为 100 ,当使用 a 来初始化 b 时,b 中保存的值也为100,但b中的100与a中的是完全独立的,该值只是a中的值的一个副本,此后,
这两个变量可以参加任何操作而相互不受影响。
题目2是引用类型,当从一个变量向另一个变量赋值引用类型的值时,同样也会将存储在变量中的对象的值复制一份放到为新变量分配的空间中。
这时保存在变量中的是对象在堆内存中的地址,所以,与简单赋值不同,这个值的副本实际上是一个指针,而这个指针指向存储在堆内存的一个对象。那么赋值操作后,
两个变量都保存了同一个对象地址,则这两个变量指向了同一个对象。因此,改变其中任何一个变量,都会相互影响。
因此,引用类型的赋值其实是对象保存在栈区地址指针的赋值,因此两个变量指向同一个对象,任何的操作都会相互影响。