我正在使用node.js v4.3.1在node.js中使用命名参数
我想在调用函数中使用命名参数,因为它们更具可读性。
在python中,我可以用这种方式调用函数;
info(spacing=15, width=46)
如何在node.js中执行相同的操作?
我的javascript函数看起来像这样;
function info(spacing, width)
{
//implementation
{
我正在使用node.js v4.3.1在node.js中使用命名参数
我想在调用函数中使用命名参数,因为它们更具可读性。
在python中,我可以用这种方式调用函数;
info(spacing=15, width=46)
如何在node.js中执行相同的操作?
我的javascript函数看起来像这样;
function info(spacing, width)
{
//implementation
{
标准JavaScript的方法是通过一个 “选项” 对象像
info({spacing:15, width:46});
在代码使用
function info(options) {
var spacing = options.spacing || 0;
var width = options.width || "50%";
...
}
作为对象丢失的钥匙
返回undefined
即“falsy ”。
注意,传递是“falsy”值可以用这种问题的代码......所以,如果这是需要你必须编写更复杂的代码像
var width = options.hasOwnProperty("width") ? options.width : "50%";
或
var width = "width" in options ? options.width : "50%";
取决于您是否想要支持继承选项。
还要注意,JavaScript中的每个“标准”对象都继承constructor
属性,所以不要以这种方式命名选项。
为什么要添加那些'||'东西?他们是默认值吗?我对吗? – user781486
@ user1824987:是的......如果没有传递'width''options.width'将返回'undefined',因此'||'操作符会选择右侧。 – 6502
总是使用'options.hasOwnProperty'更安全吗? “falsy”是什么意思? – user781486
使用ES6更容易。 nodejs> 6.5支持这些功能。
你应该看看这个链接:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment
要使用实现具体用法。但我不会推荐它。
下面的代码(取自上面的链接)是一个更好的做法,因为您不必记住按照哪个顺序编写参数。
function drawES6Chart({size = 'big', cords = { x: 0, y: 0 }, radius = 25} = {}) {
console.log(size, cords, radius);
// do some chart drawing
}
您可以通过使用此功能:
这样的功能得到更多的理解,如果你有一个名为大小,线和半径变量它会变得更好。然后你可以用对象简写来做到这一点。
// define vars here
drawES6Chart({ cords, size, radius })
订单无所谓。
有趣的是,http://kangax.github.io/compat-table/es6/表示Node.js现在不支持解构赋值(4.x都不是5.x版本)。 – Dzenly
@Dzenly修复答案。感谢您的通知 –
Javascript没有命名函数参数。传递一个对象字面值('{param:value}')通常是如何在Javascript中完成的。 –
[javascript中的命名参数](http:// stackoverflow。com/questions/11796093/named-parameters-in-javascript) –