作用域及作用域链
-
所谓作用域通俗点讲就是变量的可作用范围。 两大核心 作用域和原型。
-
一般有三种作用域。全局,函数,块。
var a = 100; function fun1() { var b = 200; if (true) { let c = 300; console.log(c); } console.log(b); } fun1(); console.log(a); var e = 0; function fun2(){ var e = 1; function fun3(){ var e = 2 ; function fun4(){ console.log(e) } fun4(); } fun3() } fun2()
-
在作用域嵌套下,由内向外,一层一层往上的链式规则,这就是作用域链
-
变量提升及函数提升
什么是变量提升?
变量提升是指将变量声明提升到它所在的作用域的最开始部分
console.log(str) var str = 'Jerry' console.log(str) // undefined Jerry 相当于 var str console.log(str) str = 'Jerry' console.log(str)
什么是函数提升
创建函数有两种形式,一种是函数声明,另外一种是函数字面量,只有函数声明才有变量提升
console.log(a) // f a() { console.log(a) } console.log(b) //undefined //函数声明 function a()