一道筆試題思考而來的,通常情況下沒人會在函數內部修改參數值。這里僅拿出來討論,有三種方式可以修改。
1,直接修改函數聲明時的形參
復制代碼 代碼如下:
function f1(a) {
alert(a);
a = 1;//修改形參a
alert(1 === a);
alert(1 === arguments[0]);
}
f1(10);
2,通過函數內部的arguments對象修改
復制代碼 代碼如下:
function f2(a) {
alert(a);
arguments[0] = 1;//修改arguments
alert(1 === a);
alert(1 === arguments[0]);
}
3,函數內部聲明的局部變量與形參同名
復制代碼 代碼如下:
function f3(a) {
alert(a);
var a = 1;//聲明局部變量a且賦值為1
alert(1 === a);
alert(arguments[0]);
}
f3(10);
4,如果只是聲明局部變量a,卻不賦值,情況又不一樣了
復制代碼 代碼如下:
function f3(a) {
var a;//僅聲明,不賦值
alert(a);
alert(arguments[0]);
}
f3(10);
新聞熱點
疑難解答
圖片精選