2012-11-15 43 views
0
function outerFun(arg1, arg2, arg3){ 

    function innerFun(arg1, arg2){ 
     //do something 
    } 

    var innerArgs = Array.prototype.slice.call(arguments, 1); 
    innerFun.apply(null, innerArgs); 
} 

正如你所看到的,我試圖用一個不同函數的修改參數數組調用一個函數。做這個我能想到的唯一方法是使用apply()方法並傳遞切片數組。我的問題是,是否有不同的方式來做到這一點?如果沒有,那麼我可以傳遞null來應用()還是被認爲是不好的做法?將null傳遞給Function.call()

+1

傳遞null,referes這窗口。 –

+0

你想做什麼?你需要這個成爲全球範圍嗎?如果沒有innerFun功能,恐怕很難回答。我不會投票結束,因爲我可能錯過了一些東西,但這個問題看起來不夠精確。 –

+0

這不行嗎? innerFun(arg2,arg3) –

回答

1

我的問題是,是否有不同的方式做到這一點?

不,apply()是JavaScript中唯一能夠以數組爲參數運行函數的方法。但是,你仍然可以使用實際的參數和使用的功能:

function outerFunc(arg1, arg2, arg3){ 
    /* ... */ 
    innerFun(arg2, arg3); 
    /* ... */ 
} 

如果沒有那麼我能不能傳遞null申請()或者是,被認爲是不好的做法?

你可以,它不被認爲是不好的做法。該函數的行爲就像在全局上下文中使用它一樣。這也使您能夠在需要多個參數的函數上使用數組。

參見: