作用域
doSomething=()=>{ //函式作用域,变数只存在这里面 var mood='happy'; console.log(mood);}doSomething();//会输出happyconsole.log(mood);//报错mood is not defined
语法作用域(Lexical scope)
静态作用域
-在直译器进行语法解析时便已决定作用域,且不会改变,javaScript属之动态作用域
-作用域在函式调用时才决定
阶层式作用域
当内层作用域找不到指定的变数时会向外
找寻,皆找不到时会报错ReferenceError

var value=1;fn1=()=>{ conole.log(value)}fn2=()=>{ var value=2; fn1();}fn2();//输出结果为 1
若为动态作用域,当变数值在现作用域找不到值时,会往方法呼叫源寻找,而不是向外找寻,如上例若为动态作用域,fn1作用域内找不到value变数的值,会向呼叫fn1的fn2作用域查找,输出值为2
上一篇:1-JavaScript运作原理