直接看程式碼:

測試範例 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>

 

 

 

arrow
arrow
    全站熱搜

    wbkuo 發表在 痞客邦 留言(0) 人氣()