同样都是值传递为什么可以给对象加属性? 还有后面的var obj是把前一个obj覆盖了吗?
还有这里
左边错误没有输出。右边正常,变量声明放在使用的后面只有值类型的变量可以吗?
2,3能懂了,可1,JavaScript高级程序设计里说ECMAScript中所有的函数参数都是按值传递的啊。不过它还说就算是按值传递的,obj也会按引用来访问一个对象。可不可以按c语言的指针来理解,把指针的值也就是保存的地址传给函数,然后函数里的obj使用时就是引用内存里的那个地址,后面重新声明的话,就使obj指向后面objec的地址了?
追答是这样理解的。
function set2(persen2){},此函数中 执行set2(persen2)这条语句,persen2是函数set2()的内部属性; 后面alert(persen2)返回undefined,persen2是第5行定义的外部全局变量。
function set(obj){} ,此函数类同上一个,set(persen),的persen对象是外部对象传入内部,内部为此对象添加了name属性且赋值“like”。
函数内部的var obj不会覆盖前一个,作用阈不同,只在set()函数内部可用。
左侧var kk=new Object();创建对象没有定义name属性,在alert(kk.name)提示name是undefined。
kk是全局变量,后面定义var kk;也是全局变量。