直接看程式碼:
測試範例 1 的執行結果跟我想的完全不一樣
我一直以為 var data = {} 沒有被執行到的話
data 應該會是外面定義的值!
結果是就算沒執行到,只要暱名 function 有任何地方宣告就算了
就不會再往上找變數的定義!
<script src='https://code.jquery.com/jquery-1.12.4.js'></script>
<script>
$(function () {
var data = {};
// 測試範例1
// 裡面的 data 會是 undefined
// 因為 JavaScript 會判斷暱名 function 裡有對 data 做宣告
// 就不會往上層去找 data 的定義
// 但執行時 data 還沒有給值,所以會是 undefined
console.log('data = ', data);
$.each([{},{},{}], function (i, item) {
console.log('data = ', data);
if (false) {
var data = {};
}
});
// 測試範例2
// 裡面的 data 會是 {}
// 因為暱名 function 裡沒有定義 data 的話,會往上層去找定義
console.log('data = ', data);
$.each([{},{},{}], function (i, item) {
console.log('data = ', data);
});
});
</script>
文章標籤
全站熱搜
