2017-03-13 21 views
0

函數參數自年後,當我第一次見到的JavaScript我一直使用的默認值對於函數參數,如:正確的方式來定義默認值在JavaScript

function addToCartCallback3(responseData, toCartBtn = null) { 
    // ... 
} 

但我注意到,現在我PhpStorm警告我說,這是錯誤的,並且在 toCartBtn逗號,或閉括號)預計。

上述代碼在Chrome和Firefox中正常工作,但殺死了IE11中的所有JavaScript。 (在IE11中,控制檯告訴我和PhpStorm相同)

爲什麼這段代碼錯了,或者應該使用什麼?

我知道(typeof toCartBtn == 'undefined')應該這樣做,但我很好奇爲什麼其他方法突然被認爲是語法錯誤。

回答

4

IE11不支持默認參數。這是ES6中瀏覽器無法識別的JavaScript語言的擴展。

你可以看看this useful resource。如果你看看'默認函數參數',你會發現它在該版本的IE中不被支持。

+0

MDN也有一個有用[兼容性表(https://developer.mozilla.org/en設置爲ECMAScript 6 -US /文檔/網絡/的JavaScript /參考/函數/ Default_parameters)。 –

4

正如所寫,這隻適用於ES6瀏覽器,因爲ES6將包含此默認語法。 所以在IE11你必須把默認體內:

function addToCartCallback3(responseData, toCartBtn) { 
    toCartBtn = toCartBtn || 'defaultHere'; 
} 

請注意,如果你是默認應該是零,你可以不使用默認的,因爲在大多數情況下,一個未定義的參數的行爲將與具有null值的參數的行爲相同。

3

爲了得到這個語法通過PHPStorm接受,請務必JavaScript語言版本File | Settings | Languages & Frameworks | JavaScript