範围鍊,也就是在查找 function 内的变数时,依照要如何向外寻找的规则。
而这个规则跟上一篇文章提到的执行作用域无关。
而是跟这个函式在编写的时候的位置有关。
当函式被呼叫的时候,会从函式所在的位置往外开始一层一层的寻找需要用到的变数名称。
没有找到的话就会报错。
var person = '老妈'; function sayHi () { console.log('hi ' + person); } function doMorningWork () { var person = '老爸'; function meetAntie() { var person = '丑丑阿姨'; console.log('哈啰~ ' + perosn); } sayHi(); doMorningWork(); } sayHi(); doMorningWork();
可以透过不同的地方的执行观察看看会出现甚么结果
var person = '老妈'; function sayHi () { console.log('hi ' + person); } function doMorningWork () { var person = '老爸'; function meetAntie() { var person = '丑丑阿姨'; console.log('哈啰~ ' + perosn); } sayHi(); // doMorningWork(); } sayHi(); // doMorningWork();
或是
var person = '老妈'; function sayHi () { console.log('hi ' + person); } function doMorningWork () { var person = '老爸'; function meetAntie() { var person = '丑丑阿姨'; console.log('哈啰~ ' + perosn); } sayHi(); // doMorningWork(); } // sayHi(); doMorningWork();
剩下的就自己练习看看,来实际感受一下範围鍊的感觉吧! 汪汪