变量的两种类型
基本类型: undefined、Null、Boolean、Number、String五种 (简单的数据段);
引用类型: object (由多个值构成),也就是我们说的“对象”
从复制结果看两种变量的特性
基本类型变量的复制 : 将前一变量赋值给后一变量时,只是将前一个变量的值赋给后一个变量,之后两个变量重新赋值互不影响,如下:
var a=3
var b=a
b=4
console.log(a)//b的重新赋值不影响a,此时a还是原值3
引用类型变量的复制 : 将前一变量赋值给后一变量时,是将前一个变量的指针给后一个变量,两个变量用的是同一个指针,指向的是同一个地址,是同一个值。无论哪个变量改变这同一个值,另一变量的指针的值跟着改变,两个变量重新赋值相互影响,如下:
var a={d:3}
var b=a
b.d=4
console.log(a.d)//给b.d重新赋值为4,因a.d指针也指响这个地址,所以a.d的值也是4
由上可知:基本类型变量复制的是变量的副本,而引用类型变量复制的是指针
变量的多次定义和重新赋值
多次定义
在不同作用域里可以多次定义,互不影响
在同一作用域里,第二次定义无效
重新赋值
宣告,而不是赋值,变量只有定义(宣告)后未赋值的情况下才会
函数中形参和局部变量同名
ps: 在我们自己写代码中,一般不会做这样的蠢事。
js对形参在变量对象中是如何保存的呢,请看规范:
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net