亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將參數傳遞給另一個javascript函數

將參數傳遞給另一個javascript函數

冉冉說 2019-07-29 16:00:49
將參數傳遞給另一個javascript函數我試過以下但沒有成功:function a(args){    b(arguments);}function b(args){    // arguments are lost?}a(1,2,3);在函數a中,我可以使用arguments關鍵字來訪問參數數組,在函數b中這些參數丟失了。有沒有辦法將參數傳遞給另一個javascript函數,就像我嘗試做的那樣?
查看完整描述

3 回答

?
寶慕林4294392

TA貢獻2021條經驗 獲得超8個贊

用于.apply()arguments函數進行相同的訪問b,如下所示:

function a(){
    b.apply(null, arguments);}function b(){
   alert(arguments); //arguments[0] = 1, etc}a(1,2,3);

你可以在這里測試一下。


查看完整回答
反對 回復 2019-07-29
?
婷婷同學_

TA貢獻1844條經驗 獲得超8個贊

傳播運營商

spread運算符允許在需要多個參數(用于函數調用)或多個元素(用于數組文字)的位置擴展表達式。

ECMAScript ES6添加了一個新的運算符,允許您以更實際的方式執行此操作... Spread運算符

不使用該apply方法的示例:

function a(...args){
  b(...args);
  b(6, ...args, 8) // You can even add more elements}function b(){
  console.log(arguments)}a(1, 2, 3)

Note 如果您的瀏覽器仍使用ES5,則此代碼段會返回語法錯誤。

編者注:由于代碼片段使用console.log(),您必須打開瀏覽器的JS控制臺才能看到結果 - 沒有頁內結果。

它會顯示以下結果:

簡而言之,如果您使用數組,擴展運算符可以用于不同的目的,因此它也可以用于函數參數,您可以在官方文檔中看到類似的示例:Rest參數


查看完整回答
反對 回復 2019-07-29
?
青春有我

TA貢獻1784條經驗 獲得超8個贊

沒有任何其他的答案中提供的解釋是,原來的參數仍然可用,但不是在原來的位置arguments的對象。

所述arguments對象包含提供給函數每個實際參數的一個元件。當你調用a你提供三個參數:編號12和,3。所以,arguments包含[1, 2, 3]。

function a(args){
    console.log(arguments) // [1, 2, 3]
    b(arguments);}

b但是,當你調用時,你只傳遞一個參數:a's argumentsobject。所以arguments包含[[1, 2, 3]](即一個元素,它是具有包含原始參數的屬性aarguments對象a)。

function b(args){
    // arguments are lost?
    console.log(arguments) // [[1, 2, 3]]}a(1,2,3);

正如@Nick演示的那樣,您可以使用在調用中apply提供set arguments對象。

以下結果取得了相同的結果:

function a(args){
    b(arguments[0], arguments[1], arguments[2]); // three arguments}

apply在一般情況下是正確的解決方案。


查看完整回答
反對 回復 2019-07-29
  • 3 回答
  • 0 關注
  • 744 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號