JavaScript 中的传值与传址
copy from 小叉的http://ciaoca.com/#!diary?id=221
-----------------------------------------------------------------------------
前几天看到一道题目,如下:
alert([]!=[]) // true
代码很短,得到的结果却是 true。
[] 和 [] 两个值看似一样,但是为什么判断它们不相等时却得到 ture 呢?这两天看权指中找到了答案,涉及到 JavaScript 中的传值与传址。
JavaScript 类型分为 基础类型 和 引用类型,JavaScript 的基本规则是:基本数据类型通过传值来操作,而引用类型通过传址来操作。
数字和布尔类型属于基本类型,对象属于引用类型,而数组和函数都是对象的特殊类型。因此数组使用的是传址操作,所以在比较时是去判断是否引用为同一个地址。
通过两个示例来看传值和传址的区别:
// 传值示例 var a=1; var b=a; b=2; console.log(a); // 1 console.log(b); // 2 console.log(a==b); // false // 传址示例 var c=[]; var d=c; d[0]="new"; console.log(c); // ["new"] console.log(d); // ["new"] console.log(c==d); // true
附上一张 JavaScript 类型总览(图) 供大家参考:
相关推荐
TreasureZ 2020-06-20
徐建岗网络管理 2020-06-11
NameCHC 2020-05-25
FCLAMP 2020-04-17
First00 2020-03-01
TyrionZK 2020-01-29
hitxueliang 2020-01-07
zhouxihua0 2019-12-24
First00 2019-12-16
yfisaboy 2019-12-09
阿狸写代码 2019-12-02
bangrenzhuce 2019-11-19
fuguangchao 2019-10-21
tydldd 2019-10-22
beloveddarling 2015-02-26
del 2015-10-16
jiangbo0 2019-07-01
pdw00 2019-07-01