var str1="我是str1"
var str2=str1;
str1="我是str2了"
console.log(str2); // 我是str1
值类型赋值的时候 直接将储存的数据复制一份进行赋值 两个数据在内存中独立
var p1= {
name:"郭富城",
age:28
}
var p2=p1
p1.name="郭德纲"
console.log(p1); //name 郭德纲
对象访问同一个 会访问同一个内存所以会访问到修改后到结果
var num=10; // 实参 调用时实际传递的参数
function changeNumber(num){
num=100 // 形参。函数声明时用来占位的参数
console.log(num); // 函数调用会将实参赋值给形参 100
}
changeNumber(num);
console.log(num); // 10
// 函数内部的变量,形参和实参只是简单的复制数据独立存储 不会改变外部的值
var obj={
name:"宅男"
}
function jinhua(param){
param.name="高富帅"
param={ //重新创建了一个对象修改了param指向
name:"腐女"
}
param.name="宅男"
console.log(param) // 宅男
}
jinhua(obj)
console.log(obj.name) // 高富帅。 指向原先的obj
// 实参的储存地址赋值给形参 函数内部同样指向该对象 所以函数内部改值会修改外部的值 而如果重新创建一个对象则不会 两个独立粗存
delete obj.name 直接删除对象 不能删除已使用的变量 可以删除未使用以及未定义的 如果删除的属性在原型中可以删除但不会真的删除
f12断点 就不说了 第一个是执行下一步 第二个是跳过下个函数 第三个是进入函数内部 第四个跳出函数内部 直接得到结果 第五个断点暂时不执行 第六个 定位到报错的地方
单独按钮取消激活