2017-10-09 57 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 
相关问题