2015-11-11 25 views
0

總的noob問題,但是說如果創建了一個名爲sendRequest的函數,它接收一個用於ajax調用的幾個參數。不使用方法中的參數

ajax請求不是必要的,最想知道的參數。

function sendRequest($el, url, trackingUrl, actionTypeString) { 
$.ajax({ 
    method: 'POST', 
    url: url, 
    actionTrackingUrl: trackingUrl, 
    actionType: actionTypeString, 
    el: $el, 
}) 
} 

function testCase1() { 
    // ......... code 
    this.sendRequest($someEl, url, someTrackingUrl, someActionTypeString) 
} 

function testCase2() { 
    // .......code 
    this.sendRequest($someEl, someUrl, someActionTypeString); 
} 

testCase2我想,以填補第四個參數(actionTypeString),而不是第三個參數?

+0

據我所知,通過簡單地省略參數是不可能的。 – tekan

回答

1

對於testCase2,您需要傳入一個空參數。

this.sendRequest($someEl, someUrl, null, someActionTypeString); 

如果你想擁有可選參數,在JavaScript中常用的模式是一個包含所有參數的一個對象來傳遞,適當命名的:

function sendRequest(options) { 
$.ajax({ 
    method: 'POST', 
    url: options.url, 
    actionTrackingUrl: options.trackingUrl, 
    actionType: options.actionType, 
    el: options.$el, 
}) 
} 

function testCase1() { 
    // ......... code 
    this.sendRequest({ 
     $el: $someEl, 
     url: someUrl, 
     trackingUrl: someTrackingUrl, 
     actionType: someActionTypeString 
    }); 
} 

function testCase2() { 
    // ......... code 
    this.sendRequest({ 
     $el: $someEl, 
     url: someUrl, 
     actionType: someActionTypeString 
    }); 
} 
0

參數分配給命名參數爲了。如果你想傳遞第四個參數但不是第三個參數,你需要顯式傳遞null。

function testCase2() { 
    sendRequest($someEl, someUrl, null, someActionTypeString); 
} 

另外,我不相信你這個正確使用 - 在這種情況下,它指的是全局對象。您可以只引用函數名稱。