脚本宝典收集整理的这篇文章主要介绍了重新回顾JavaScript的数值类型,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
JavaScript中有两中数值类型:基本数值类型和对象类型(引用数据类型)
基本数据类型:
@H_304_15@Boolean
undefined
Null
String
Number
Symbol // (ES6新增)
对象类型:
Function
Object
Array
可变与不可变
基本上数据类型是不可变的,我们不能给他添加属性,即使添加了属性也是无效的。而引用数据类型则可以添加属性,例如
VAR a = 1;
a.b = 2;
var c = a.b;
console.LOG(a); // 1
console.log(a.b); // undefined
console.log(c); // undefined
显然,当我们试图给a.b或者c赋值的时候,都是undefined
function fn(){};
var arr = [1,2,3];
fn.a = 1;
arr.b = 2;
console.log(fn.a); //1
console.log(arr.b); //2
因为他们属于对象类型,支持添加对应的属性,别问为啥,因为对象类型的有这个“天生能力”
基本数值类型通过“值”来做比较,而对象数据类型通过“引用”做比较。
基本上数据类型比较很简单,常规思维可以理解
var a = '123';
var b = '123';
console.log(a === b); //true
基本数据类型对比,没毛病,很好理解。第一句把“123”赋值给a,第二句把"123"赋值给b,那么a就是"123",b也是同样的道理,比较的结果肯定相等。而引用数据类型对比,并非把等号右侧的内容赋值给左侧变量,而是将左侧变量指向右侧内容,举个栗子:
var a = {a:1};
var b = {a:1};
console.log(a == b); //false
这个时候不能用“基本数据类型”的数据比较思维来看待这个了,这里画个图出来,相信就很好理解了
上面的对象分别是底下变量(a和b)的引用(指向),虽然左侧的{a:1}跟右侧的{a:1}看起来一模一样,但是他们还是独立的个体,不相等的。就像科学家克隆了一个动物,虽然可以跟母体长的一模一样,但他们终究是两个个体,看起来一模一样,但起码年龄不同的。但如果他们引用的来源相同的话,就返回值就是true了,举个栗子:
var a = {a:1};
var b = a;
console.log(a === b)
图示
引用(指向)是一样的,那么他们的值肯定是相等的。就像夫妻俩生了第一胎,是个女孩A,国家开放二胎政策后,他们琢磨着再生一个,结果生了双胞胎B和C,这个时候B和C都叫A亲姐姐,那么很明显了,B的姐姐和C的姐姐肯定是同一个人。
这个时候,有人提出问题来了:如果我改变{a:1}的值,他们是否还是相等的呢?答案是只要他们指向同一个地方,无论这个指向的值怎么变,都是一样的。就像B和C的姐姐是A,10年以后A长大了,但她还是B和C的姐姐。代码如下:
var a = {a:1};
var b = a;
b.a = 2;
console.log(a); // {a:2}
console.log(b); // {a:2}
以上是脚本宝典为你收集整理的重新回顾JavaScript的数值类型全部内容,希望文章能够帮你解决重新回顾JavaScript的数值类型所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。