函數執行的時候,記住"JavaScript中的函數運行在它們被定義的作用域中,而不是被執行的作用域中". 一個簡單的例子 other調用的時候,會調用其內部的now函數,now函數調用相當於調用了getInfo,getInfo調用的時候,會先找自己函數內的作用域是否有info這個變數,自己沒有,就沿 ...
函數執行的時候,記住"JavaScript中的函數運行在它們被定義的作用域中,而不是被執行的作用域中".
一個簡單的例子
1 var info = 'haha'; 2 function getInfo(){ 3 console.log(info); 4 } 5 function other(){ 6 var info = 'lolo'; 7 var now = getInfo; 8 now(); 9 } 10 other();
other調用的時候,會調用其內部的now函數,now函數調用相當於調用了getInfo,getInfo調用的時候,會先找自己函數內的作用域是否有info這個變數,自己沒有,就沿著作用域鏈在自己定義的上一級作用域中進行尋找,在這裡就是全局作用域.因此這個info指的就是'haha'.