通过逻辑运算符OR分配默认值

时间:2011-11-16 18:38:36

标签: javascript function default-value

我们知道javascript逻辑运算符||如果第一个操作数是 true ,则生成其第一个操作数的值。否则,它产生第二个操作数的值。

所以在这个例子中:

<script language="javascript">
function test (value){
    this.value = value || "(value not given)";
}
</script>

如果传递给函数的参数 value 被视为 false ,如整数 0 或空字符串“”< / em>然后 this.value 将被设置为( value not given),这不是 true 正确(因为我们确实传递了一个值)。

所以问题是哪个应该是设置 this.value 的最佳方式?

编辑:所有4个第一个答案都使用三元运算符“?”。我的问题是关于“||”操作

6 个答案:

答案 0 :(得分:7)

使用||的方案最方便编写,但只能在假名值undefinednull0,{{1 }},""false)不是合法的值。

如果您想允许特定的假值而不允许其他值,那么您必须编写更具体的代码来处理您的特定情况。例如,如果您想允许空字符串,但不允许null或undefined或其他falsey值,那么您必须编写更具体的代码,如下所示:

NaN

或者,如果您只想排除function test(value) { if (value || value === "") { this.value = value; } else { this.value = "(value not given)"; } } ,则可以专门对其进行测试:

undefined

答案 1 :(得分:1)

这取决于您要排除的值。如果“一般错误值”过于宽泛,则可以更明确:

function test(value) {
    this.value = value !== undefined ? value : "(value not given)";
}

答案 2 :(得分:1)

如果您希望能够分配假名值,请执行此操作。

this.value = (typeof value !== 'undefined') ? value : 'value not given';

这将保留false''0等值,但在值实际上不作为参数传递时将使用默认值。

答案 3 :(得分:1)

<script language="javascript">
function test (value){
    this.value = arguments.length > 0 ? value : "(value not given)";
}
</script>

您可以通过检查函数arguments数组的长度来检查是否传入了该参数。

答案 4 :(得分:1)

正确的方法是:

this.value = (typeof value == 'undefined') ? 'my argument' : value;

可能重复的问题。 谷歌吧。

答案 5 :(得分:0)

今天,根据您的应用程序关心的browser support,您可能想改用default parameters

_dbContext.Entry(existingItem).CurrentValues.SetValues(modifyItem);

这与今天有关,自2011年以来问题和答案的日期也没有更新,所以我认为这可能会有所帮助。