2012-07-21 40 views
-8

在PHP中,我用這個:的JavaScript相當於PHP的參數傳遞

do_it($var2 = 'something_cool'); 

function do_it($var1, $var2) { 
// does something 
} 

在JavaScript中,我不是很確定的符號。

do_it(var2 = 'something_cool'); // This isn't right, I don't think. 

function do_it(var1, var2) { 
// does something 
} 

我想定義var2但將var1留空。我的do_it應該是什麼樣的線?

+1

它在php中是「錯誤的」:這將在函數內將'something_cool''賦值給'$ var1',而不是(你可能期望的)''var2'。我不知道,你從哪裏得到這個,但在PHP中沒有命名參數.... – KingCrunch 2012-07-21 23:38:18

+0

我發誓我已經在PHP中完成了...好吧,我可能正在使用WordPress設置默認值爲參數,我只是改變其中的一個。因此,爲什麼我認爲我可以在JavaScript中做到這一點。 D'哦! – 2012-07-21 23:40:52

+0

但是(如上所述)只能從左到右設置參數....在PHP中沒有命名參數! – KingCrunch 2012-07-21 23:42:04

回答

6

兩者都不正確。在PHP var1中將獲得該函數中的值。在JS中,如果你不想爲第一個參數指定某些東西,那麼將其設爲null

do_it(null, 'something_cool'); 

然後在函數內部,檢查它是否爲空,如果是,可以給它一個默認值。或者只是重新排列它們,所以你不必這樣做。在JS中,你可以將任意數量的參數傳遞給一個函數。

1

PHP版本將打印缺少的第二個參數錯誤。 對於JavaScript中的可選變量:

function A(var1, var2) 
{ 
    if (!var2) 
      var2 = "default"; 
} 

A(1); 
+2

不,它不會。它只會觸發PHP警告,除非您將自定義錯誤處理程序設置爲引發ErrorException。 – Lusitanian 2012-07-21 23:41:40

+0

是的,我的壞。我的整個說法是他的PHP是錯誤的,它會打印一些錯誤。 – Novak 2012-07-21 23:53:03

+0

當然不會造成任何傷害,您的整體觀點正確無誤。 – Lusitanian 2012-07-22 00:35:40