淺談JavaScript函數(shù)參數(shù)的可修改性問題
更新時間:2013年12月05日 10:28:11 作者:
這篇文章主要是對JavaScript函數(shù)參數(shù)的可修改性進行了詳細的介紹,需要的朋友可以過來參考下,希望對大家有所幫助
一道筆試題思考而來的,通常情況下沒人會在函數(shù)內部修改參數(shù)值。這里僅拿出來討論,有三種方式可以修改。
1,直接修改函數(shù)聲明時的形參
復制代碼 代碼如下:
function f1(a) {
alert(a);
a = 1;//修改形參a
alert(1 === a);
alert(1 === arguments[0]);
}
f1(10);
函數(shù)f1定義了參數(shù)a,調用時傳參數(shù)10,先彈出10,修改a為1,彈出兩次true,a和arguments[0]都為1了。
2,通過函數(shù)內部的arguments對象修改
復制代碼 代碼如下:
function f2(a) {
alert(a);
arguments[0] = 1;//修改arguments
alert(1 === a);
alert(1 === arguments[0]);
}
效果同函數(shù)f1。
3,函數(shù)內部聲明的局部變量與形參同名
復制代碼 代碼如下:
function f3(a) {
alert(a);
var a = 1;//聲明局部變量a且賦值為1
alert(1 === a);
alert(arguments[0]);
}
f3(10);
函數(shù)f3定義了形參a,函數(shù)內部聲明局部變量a同時賦值為1,但這里的a仍然是參數(shù)a,從最后彈出的arguments[0]被修改為1可以證明。
4,如果只是聲明局部變量a,卻不賦值,情況又不一樣了
復制代碼 代碼如下:
function f3(a) {
var a;//僅聲明,不賦值
alert(a);
alert(arguments[0]);
}
f3(10);
這時候彈出的都是10,而不是undefined。
您可能感興趣的文章:
相關文章
理解JavaScript中的適配器模式Adapter?Pattern
這篇文章主要介紹了理解JavaScript中的適配器模式,適配器模式即Adapter?Pattern,是作為兩個不兼容的接口之間的橋梁。這種類型的設計模式屬于結構型模式,下文更多相關介紹需要的小伙伴可以參考一下2022-04-04
uni.getLocation和wx.getLocation方法調用無效也不返回失敗的解決方案
這篇文章主要給大家介紹了關于uni.getLocation和wx.getLocation方法調用無效也不返回失敗的解決方案,文中通過實例代碼以及圖文介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2023-04-04
Webpack4+Babel7+ES6兼容IE8的實現(xiàn)
這篇文章主要介紹了Webpack4+Babel7+ES6兼容IE8的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-04-04
前端js使用xlsx-js-style導出Excel文件并修飾單元格樣式
這篇文章主要給大家介紹了關于前端js使用xlsx-js-style導出Excel文件并修飾單元格樣式的相關資料,前端開發(fā)過程中經常遇到導出excel的需求,需要的朋友可以參考下2023-08-08

