close
直接看程式碼:
測試範例 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>
全站熱搜