【问题标题】:Passing named arguments to a Javascript function [duplicate]将命名参数传递给Javascript函数[重复]
【发布时间】:2013-07-09 13:11:39
【问题描述】:

使用类似的方法调用 Javascript 函数

someFunction(1, true, 'foo');

不熟悉功能就不是很清楚。

我已经看到并使用了插入 cmets 的样式来命名参数:

someFunction(/*itemsToAdd*/1, /*displayLabel*/ true, /*labelText*/ 'foo');

但是当它超过 3 个或更多参数时,最好在 JSON 对象中传递参数,这使得它与顺序无关,并允许在被调用函数中提供默认值

someFunction({'itemsToAdd':1, 'labelText':'foo', 'displayLabel':true});

我的问题是;该行业的一般做法是什么,是否有不使用任何这些方法的首要原因。例如 Lint 不喜欢第二种方法。

【问题讨论】:

  • 如果你使用像 Coffeescript 这样具有解构赋值的东西,最后一种风格会非常方便。
  • This 解决了 cmets 样式的问题。似乎第二种更常见。

标签: javascript function parameter-passing named


【解决方案1】:

就我个人而言,我只是 grep 函数名称并查看与之相关的注释。维护良好的代码将在函数上方有一个注释,解释参数是什么以及它对它们的作用,如果您需要解释为什么您的参数是这样的,您可以将其粘贴到函数调用上方。

使用 JSON 传递参数似乎是一种增加不必要的解析开销并可能使维护者感到困惑的方法 - 只需添加更多字段并将 NULL 传递给您想要默认值的字段,您可以解释为什么要这样做在调用注释中传递 NULL,而不是让它们不出现在 JSON 中。

【讨论】:

  • 他只是错误地调用了 javascript 对象 JSON,实际上并没有涉及到 JSON 或 JSON 解析。
  • Esailija,感谢您的回复。我认为 JSON 是用于创建 JS 对象的符号。我的第三个例子不是 JSON 吗?我现在用谷歌搜索,但解释一下可能对其他读者有用。
  • JTravakh,谢谢。我同意 cmets 在任何情况下都是必不可少的,我只是希望在编写代码时避免不断地反复检查参数的顺序和含义。尤其是当函数位于另一个模块/文件中时。第三种方法(“JSON”的东西)似乎更令人难忘且易于出错。编写代码更快,阅读更容易,因此更容易检测错误。 JavaScript 似乎以 70% 的机器代码运行,因此在大多数情况下,解析开销并不明显,是吗?
猜你喜欢
  • 2012-11-13
  • 1970-01-01
  • 2022-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-22
  • 2019-12-19
  • 1970-01-01
相关资源
最近更新 更多