2017-10-09 91 views
0

我已經寫了一個JavaScript項目,該項目大量使用的默認參數,例如:從Rhino調用腳本時,有沒有一種方法可以在javascript函數中使用可選參數?

function hello(x = true){ 
    ... 
} 

現在我想從命令行調用我的代碼。我曾嘗試使用Rhino,Nashorn和Node,但它們在遇到默認參數時都會引發錯誤。在犀牛的錯誤是:

js: "resource.js", line 6: missing) after formal parameters 
js: function hello(x = true){ 
js: ..................^ 
js: "resource.js", line 1: Compilation produced 1 syntax errors. 

有一些方法我可以調用命令行我的項目,而無需重寫我的所有代碼擺脫默認參數?

感謝

編輯:從4版本升級的node.js 8版本之後,這個工程。我將使用node.js,但我仍然不知道這是否可能在犀牛身上。

+0

你使用了哪些版本?特別是節點知道如何處理默認值很長一段時間。 – Bergi

+0

我正在使用rhino 1.7,結果我的ubuntu安裝了較舊版本的節點 - v4.2.6。所以更新節點的伎倆,謝謝!如果可能的話,我仍然更喜歡使用rhino,因爲我有很多全局變量,節點也需要我重做所有這些。 –

回答

1

您總是有辦法複製默認參數的行爲,但它不會像新版本的javascript那樣可讀。

的做如果你只有一個參數將是你的函數內的undefined檢查的簡單方法,

js> function hello(x){ 
    > if (x === undefined) x = 5; 
    > return x; 
    > } 
js> hello() 
5 
js> hello(42) 
42 

在另一方面,如果你的函數包含多個參數我建議您使用一個對象作爲輸入,然後檢查undefined值,如上所示:

js> function hello(args){        
    > if (args.x === undefined) args.x = 5;  
    > return args.x + "-" + args.y; 
    > } 
js> hello({y: 12}) 
5-12 
js> hello({x: 1, y: 42}) 
1-42 
相關問題