预定义参数 [重复]

Posted

技术标签:

【中文标题】预定义参数 [重复]【英文标题】:pre-defined parameters [duplicate] 【发布时间】:2012-10-18 03:25:42 【问题描述】:

我希望能够在 javascript 中做到这一点:

function myFunction(one, two = 1) 
     // code


myFunction("foo", "2");

myFunction("bar");

我试过了,但它不起作用。我不知道如何调用这种类型的参数,有人能指出我正确的方向吗?

谢谢。

【问题讨论】:

涉及two = two || x; 模式的答案应被理解为有风险,具体取决于您的具体情况。这意味着用默认值覆盖参数的任何“虚假”值,这可能合适也可能不合适。 【参考方案1】:
function foo(a, b)
 
   a = typeof a !== 'undefined' ? a : 42;
   b = typeof b !== 'undefined' ? b : 'default_b';
   //...
 

可能与Set a default parameter value for a JavaScript function 重复

【讨论】:

明确重复...但您确实想明确检查未定义,如本答案中所示 因为typeof返回你给的参数的类型。如果a是一个字符串那么string被返回,如果没有参数那么typeof将返回undefined 如果您认为这是重复的,您应该投票关闭或标记它。不要在这里复制答案。【参考方案2】:

使用这个:

function myFunction(one, two) 
   if (typeof two == 'undefined') two = 1;
   ...

注意不要犯常见的错误

two = two || 1;

因为这不允许您提供""0

【讨论】:

【参考方案3】:
function myFunction(one, two) 
     two = two || 1

更准确地说,例如当两个为零时它可能不起作用,检查 null 或 undefined 例如

if (typeof two === "undefined") two = 1

【讨论】:

【参考方案4】:

试试:

if ( typeof two === "undefined" ) two = 2;

two = typeof two !== "undefined" ? two : 2;

未定义的参数将具有值undefined,这是一个“假”值。我们可以测试这种虚假性,并相应地更改值。

【讨论】:

以上是关于预定义参数 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

用于替换长预定义参数的 Shell 脚本 [重复]

用户没有定义无参数构造函数[重复]

错误:重新定义默认参数 [重复]

在 PROC 中将表参数定义为 OUTPUT [重复]

将参数传递给自定义 UITableViewCell [重复]

检索存储过程中定义的参数列表[重复]