淺談JavaScript函數(shù)參數(shù)的可修改性問(wèn)題
一道筆試題思考而來(lái)的,通常情況下沒(méi)人會(huì)在函數(shù)內(nèi)部修改參數(shù)值。這里僅拿出來(lái)討論,有三種方式可以修改。
1,直接修改函數(shù)聲明時(shí)的形參
function f1(a) {
alert(a);
a = 1;//修改形參a
alert(1 === a);
alert(1 === arguments[0]);
}
f1(10);
函數(shù)f1定義了參數(shù)a,調(diào)用時(shí)傳參數(shù)10,先彈出10,修改a為1,彈出兩次true,a和arguments[0]都為1了。
2,通過(guò)函數(shù)內(nèi)部的arguments對(duì)象修改
function f2(a) {
alert(a);
arguments[0] = 1;//修改arguments
alert(1 === a);
alert(1 === arguments[0]);
}
效果同函數(shù)f1。
3,函數(shù)內(nèi)部聲明的局部變量與形參同名
function f3(a) {
alert(a);
var a = 1;//聲明局部變量a且賦值為1
alert(1 === a);
alert(arguments[0]);
}
f3(10);
函數(shù)f3定義了形參a,函數(shù)內(nèi)部聲明局部變量a同時(shí)賦值為1,但這里的a仍然是參數(shù)a,從最后彈出的arguments[0]被修改為1可以證明。
4,如果只是聲明局部變量a,卻不賦值,情況又不一樣了
function f3(a) {
var a;//僅聲明,不賦值
alert(a);
alert(arguments[0]);
}
f3(10);
這時(shí)候彈出的都是10,而不是undefined。
相關(guān)文章
一文教你用javascript實(shí)現(xiàn)條形碼和二維碼
這篇文章主要為大家介紹了如何用javascript實(shí)現(xiàn)條形碼和二維碼示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07
AutoSave/自動(dòng)存儲(chǔ)功能實(shí)現(xiàn)
AutoSave/自動(dòng)存儲(chǔ)功能實(shí)現(xiàn)...2007-03-03
使用ThinkJs搭建微信中控服務(wù)的實(shí)現(xiàn)方法
這篇文章主要介紹了使用ThinkJs搭建微信中控服務(wù)的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08
js trim函數(shù) 去空格函數(shù)與正則集錦
在javascript中處理文本框輸入值的時(shí)候,經(jīng)常要用到"去掉前后空白"的功能。用過(guò)jQuery的朋友都知道,jQuery提供了一個(gè)trim()這樣的功能函數(shù),可以很輕松幫我們實(shí)現(xiàn)這樣的效果。2009-11-11
微信小程序?qū)崿F(xiàn)登錄注冊(cè)tab切換效果
這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)登錄注冊(cè)切換效果,簡(jiǎn)易版tab切換效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-11-11

