function speakA(){
alert(this.name);
alert(this.n);
speakC();
}
function speakC(){
this.name = "C";
this.n = "ddd";
}
speakA();
输出的是C undefined
alert语句在this.name赋值语句之前,为什么还能输出C,但是输出的第二个却是undefined,是和window.name有关吗?window.name这个属性是会默认先赋值吗?
通俗的解释楼上的意思,你这个窗口标签不关闭的话window.name的值不会回到初始值
这里的this都是指window
第一次执行的结果是""和undefined
这时speakC已经执行过所以window.name的值是C,window.n是ddd
然后你没看清楚想再看一遍 按了f5刷新。刷新后window.name不变,其它变量都回复到初始值
所以此时window.name的值是C,window.n的值是undefined