我们知道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个第一个答案都使用三元运算符“?”。我的问题是关于“||”操作
答案 0 :(得分:7)
使用||
的方案最方便编写,但只能在假名值undefined
,null
,0
,{{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年以来问题和答案的日期也没有更新,所以我认为这可能会有所帮助。