首頁  >  文章  >  web前端  >  淺談JavaScript函數參數的可修改性問題_javascript技巧

淺談JavaScript函數參數的可修改性問題_javascript技巧

WBOY
WBOY原創
2016-05-16 17:10:431457瀏覽

一道筆試題思考而來的,通常情況下沒人會在函數內部修改參數值。這裡僅拿出來討論,有三種方式可以修改。

1,直接修改函數宣告時的形參

複製程式碼 程式碼:

function f1(a) {
    alert(a);
    a = 1;//修改形參a
    alert(1 === a); }
f1(10);

函數f1定義了參數a,呼叫時傳參數10,先彈出10,修改a為1,彈出兩次true,a和arguments[0]都為1了。

2,透過函數內部的arguments物件修改

複製程式碼複製程式碼

程式碼

function f2(a) {
    alert(a);
    arguments[0] = 1;//修改arguments
  (1 === arguments[0]);

}

效果同函數f1。


3,函數內部宣告的局部變數與形參同名

程式碼如下:


function f3(a) {
    alert(a);
    var a = 1;//聲明局部變數a且賦值為1
  a);
    alert(arguments[0]);
}
f3(10);

函數f3定義了形參a,函數內部宣告局部變數a同時賦值為1,但這裡的a仍然是參數a,從最後彈出的arguments[0]修改為1可以證明。


4,如果只是宣告局部變數a,卻不賦值,情況又不一樣了

複製程式碼



複製程式碼


複製程式碼
複製程式碼 程式碼如下:function f3(a) {     var a;//僅聲明,不賦值   ]); } f3(10); 這時候彈出的都是10,而不是undefined。
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn