首頁 >web前端 >js教程 >深入理解Javascript動態方法呼叫與參數修改的問題_javascript技巧

深入理解Javascript動態方法呼叫與參數修改的問題_javascript技巧

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

Javascript中可以對所傳參數在函數內進行修改,如下

複製程式碼 程式碼如下:

function func1(name) {
    name = 'lily';
    alert(name);
}
func1('jack');//輸出🎜>
再看一個例子


複製程式碼 程式碼如下:
程式碼如下:

    this.name = n;
}
function fun2(name) {
    fun1.call(this,'lily');
    fun1.call(this,'lily');
    fun1.call(this,'lily');
    fun1(name); }
fun2("jack");//輸出"jack"

fun1函數想把fun2呼叫時的參數修改為“lily”,但沒有成功。彈出的仍然是“jack”。思考下為什麼?

實際上fun1還是有能力把fun2呼叫時的參數給修改掉的,利用caller屬性複製程式碼
程式碼如下:


function fun1() {
    arguments.callee.caller.arguments[0] = 'lily';
}
function fun2(name) {
fun1.call(this,name);
    alert(name);
}
fun2("jack");//輸出"lily"
可見,外層函數對於內層函數的呼叫棧是可見的,可修改的。
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn