在查看我在网上找到的一些代码时,我发现了这个特殊的代码行(Javascript):
function values(b) {
this.b = b || 0;
}
Run Code Online (Sandbox Code Playgroud)
我根本想不出来的目的是什么||0.如果我没有弄错,因为||返回一个布尔值,这个值b将始终是参数的布尔等效值.如果b传递为真(即1或true),那么b应该是真的; 否则,使用其中一个false值(即.NaN,0),这应该是假的.然后我解释如下:
b是true:
this.b = true || false; // will evaluate to true
Run Code Online (Sandbox Code Playgroud)
b是false:
this.b = false || false; // will evaluate to false
Run Code Online (Sandbox Code Playgroud)
我只是没有看到通过添加获得的价值||0.有人可以向我解释一下吗?
Bra*_*don 16
||在变量赋值中是指定默认值的常用方法.这是因为JavaScript的虚假值.在JavaScript中undefined,null空字符串,0所有计算为false在布尔上下文.
例如:
var blah = undefined;
if (blah) {
console.log('got it!');
}
else {
console.log('not true!'); // this one outputs
}
Run Code Online (Sandbox Code Playgroud)
||在赋值中使用是一种说法"如果已定义,则使用此".
对于此代码,
function values(b) {
this.b = b || 0;
}
Run Code Online (Sandbox Code Playgroud)
我们可以使用真值表:
b this.b
------------------
5 5
10 10
0 0
undefined 0
null 0
'' 0
Run Code Online (Sandbox Code Playgroud)
真正感兴趣的价值是undefined和null.所以我们真正想要的是:
if (b !== undefined && b !== null) {
this.b = b;
}
else {
this.b = 0;
}
Run Code Online (Sandbox Code Playgroud)
但this.b = b || 0要写得更短.