
為什么這兩段代碼最后一個console.log列印出的結果不一樣?
uj5u.com熱心網友回復:
function fn1(a) 中的引數a就等于是fn1函式內的區域變數a。你呼叫fn1()時沒有給引數a傳值,a的值就是默認值undefined。
在fn1函式內訪問a,訪問的是函式內的區域變數a。
在fn1函式內對a重新賦值,改變的也是函式內的區域變數a。函式外的全域變數a不受影響。
如果function fn1() 沒有設定引數a,函式內就沒有區域變數a,
在fn1函式內訪問a,訪問的是函式外的全域變數a。
在fn1函式內對a重新賦值,改變的也是函式外的全域變數a。
uj5u.com熱心網友回復:
樓上說的沒錯。總的來說就是:函式內部操作變數,首先要判斷有沒有同名的區域變數,有則操作的為區域變數,反之則為全域變數。
uj5u.com熱心網友回復:
簡單來說就是第一個在區域申明了變數(形參就是申明的變數),修改和列印的都是區域變數.而第二段代碼沒有在區域申明變數,所以就去找全域的變數uj5u.com熱心網友回復:
而且第一個fn1應該會被下面的fn1覆寫,真正執行會列印1,2,2,1,2,2,轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/9113.html
標籤:JavaScript
