无标题文章
2017-02-22 本文已影响7人
凸小布
赋值(=)
左边的变量等于右边的变量
var a = 10;
内部细节:是把右边变量(空间中)存储的值复制一份放在左边变量(空间中)
值类型的赋值
赋值操作:是把右边变量(空间中)存储的值[具体的数据]复制一份放在左边变量(空间中)
特点:修改了其中一个变量对另外一个变量没有影响
引用类型的赋值
赋值操作:是把右边变量(空间中)存储的值[地址]复制一份放在左边变量(空间中)
特点:修改了其中的一个对象,对另外一个对象有影响
<script>
var str1 = '让我掉下眼泪的,不止昨夜的酒';
var str2 = str1;
console.log(str2);
console.log(str1 == str2); //true
console.log(str1 === str2);//true
// 尝试修改变量的值
str1 = '让我依依不舍的,不止你的温柔';
console.log(str1);
console.log(str2);
console.log(str1 == str2); //false
var obj1 = {'name':'hello'};
var obj2 = obj1;
console.log(obj2);
console.log(obj1 == obj2); //true
console.log(obj1 === obj2);//true
// 尝试修改变量的值
obj1.name = 'world';
obj1.age = 12;
console.log(obj1);
console.log(obj2);
console.log(obj1 == obj2); //true
console.log(obj1 === obj2);//true
obj1 = {'name':'MT', 'sex':'normal'}; //该行代码切断了obj2和obj1的联系
console.log(obj1);
console.log(obj2);
console.log(obj1 == obj2); //false
console.log(obj1 === obj2);//false
console.log(obj2.sex); //undefined
</script>