function a(b){var b;console.log(b); // 結(jié)果為什么是2 } a(2);function a(b){var b = 4; console.log(b);//結(jié)果為什么是4 } a(2);
這個(gè)是arguments和變量的優(yōu)先順序在賦值前和賦值后不一樣嗎。
最后提的那個(gè)問題,其實(shí)沒有什么優(yōu)先順序,同名變量重新 var
定義,會(huì)忽略掉。
第一個(gè)函數(shù) a(2) 由于 b 已經(jīng)是這個(gè)函數(shù)的局部變量了 var b
其實(shí)什么都沒做
總結(jié):變量還是那個(gè)變量,唯一的區(qū)別是第二個(gè)函數(shù)重新賦值了而已。
傳入函數(shù)的參數(shù)是這個(gè)函數(shù)的局部變量
第二個(gè)函數(shù) var b = 4
, 其實(shí)是給 b 重新賦值為4了而已。