第一节:预解释作用域this原理及应用 课时3:全局变量的细节问题 在全局作用域中,带var和不带var的关系: 区别:带var的可以进行预解释,所以在赋值的前面执行不会报错;不带var的是不能进行预解释的,在前面执行会报错相同点:num2 = 12;相当于给window增加了一个叫做num2的属性名,属性值为12; var num = 12; 首先它相当于给全局作用域增加了一个全局变量num,但是不仅如此,它也相当于给window增加了一个属性名num,属性值为12 例题1: console.log(num); //undefined var num = 12; console.log(num2); //Uncaught ReferenceError: num2 is not defined num2 = 12; 例题2: var num = 12; console.log(num); //12 num2 = 12; console.log(num2); //12 相当于window.num2 私有作用域中出现了一个变量不是私有的,则往上级作用域进行查找,一直找到window为止,如果window中没有: 如果是获取值:console.log(total); ——> 报错如果是设置值:total = 100; ——> 相当于给window增加了一个属性名total,属性值为100 例题3: function fn(){ console.log(total); //Uncaught ReferenceError: total is not defined total = 100; } fn(); console.log(total);