- 定义变量带var和不带var的区别,相当于是一个变量
console.log(a);//undefine var a = 12; console.log(a);//a=12 console.log(window.a)//→window['a']
顺便也在全局作用域中,相当于给全局对象window增加了一个属性名
- 不带var,它就是window的一个属性
console.log(a) //报错,uncaught exception a = 12; console.log(a);//12 console.log(window.a)//12
- 以后你是创建变量,最好带var
- 在私有作用域中,带var和不带var
- 带var
function fn(){ console.log(a);//undifine var a = 12; console.log(a);//12 } console.log(a);//报错 refrence error.a not defined
在私有作用域中,没有类似window.a。 它就是私有作用域的一个变量
- 不带var
function fn(){ a = 12; console.lg(a); // 12 } fn(); console.log(a);//12
- 作用域链
- 函数执行形成一个私有的作用域,有一个保护机制,可以保护私有变量,但是进入到私有作用域当中,首先变量提升(声明过的变量是私有的,没有声明过的就不是私有的),接下来代码执行,如果遇到一个私有变量,那么按照私有处理即可;如果遇到变量不是私有的,需要向它的上级作用域进行查找(上一级如果也没有,则继续向上找,一直找到window全局作用域止),我们把这种查找机制叫做“作用域链”
- 带var
js基础var
猜你喜欢
转载自www.cnblogs.com/endian11/p/9094550.html
今日推荐
周排行