可能重复:
In Javascript, what does it mean when there is a logical operator in a variable declaration?
在网上偶然发现这个代码,不知道它做了什么,也无法找到FireBug,而且由于特殊字符我无法谷歌...
var myValue = myInput.value || 0;
谢谢! :)
答案 0 :(得分:4)
如果未定义myInput.value
(或其他假值),则会设置默认值0
一些例子......
myInput.value = undefined
var myValue = myInput.value || 0;
// myValue = 0
myInput.value = 10
var myValue = myInput.value || 0;
// myValue = 10
答案 1 :(得分:2)
||
通常称为默认运算符。它允许你给出一个默认值,如果其他东西是假的。因此,如果myInput.value
为undefined
,则myValue
将被分配0
。
答案 2 :(得分:1)
由于javascript解释器的构建方式,它可以解释某些类的值,甚至可以将值的存在(或不存在)解释为true或false
因此:
if (myMethod)
myMethod();
可以在运行之前检查myMethod是否存在。
||符号是一个短路OR语句。如果OR的第一部分被解释为或者可以被解释为非假,则该语句的该部分将被主持,并且该值将被用作myValue。如果javascript认为该语句的第一部分被解释为false,则将返回OR的第二部分。
因此在声明中:
var myValue = myInput.value || 0;
myValue将成为myInput.value包含的任何内容,如果它包含javascript可以解释为非false的任何内容。因此它可能包含"Hi, hell of a day we've got here!"
,并且会返回到myValue。
当我说不是假的时候,我并不严格意味着真实,因为“嗨,我们到这里来的一天”并不是[严格地说]被解释为真实,而是被“强迫”成为这样解释。
如果myInput.value不包含javascript强制解释为true的任何内容,则0将返回myValue。
所以在这种情况下,如果myInput.value未定义,null,false,0等,那么myValue = 0
答案 3 :(得分:0)
如果myInput.value为null(未定义),这是一种默认值为0的方法
答案 4 :(得分:0)
如果myValue
值是JavaScript中被视为false的任何值(尤其是myInput
或者0
,则myInput
设置为undefined
或null
的值||
)。诀窍是a||b
运算符的短路行为。当您评估a
且||
为真时,a
运算符会返回console.log('a'||'b'); // 'a'
:
||
当第一个参数为false时,console.log(undefined||'b'); // 'b'
运算符返回其第二个参数:
var foo = 0;
console.log('a'||foo++);
console.log(foo); // 0
console.log(undefined||foo++); // 0
console.log(foo); // 1
考虑这个也很好:
{{1}}
答案 5 :(得分:0)
Javascript具有定义的从左到右的评估顺序。所以,如果你写的东西像
如果method()返回true,if(method()|| method2()){...}
方法2()将永远不会发生,因为true或者任何东西总是为真。
这与您在Javascript中提供的示例相同。
如果“myinput.value”评估为trueish,则将分配此值,否则将为每个falsish值(null,0,“”)分配0。
答案 6 :(得分:0)
||许多语言中的运算符包括称为短切的优化:如果左侧评估为真值,则不需要评估右侧。真的||任何事情==真实。这通常用于提供默认值,如示例代码中所示。如果左侧myInput.value的计算结果为true,则整个表达式将返回该值。否则,整个表达式将返回右手值0.
请注意,这也取决于||运算符返回原始值而不是布尔值true或false值。对于逻辑测试,每一侧都被评估为真或假,但不是表达式的返回值。
功能或(a,b){ 如果(a){return a; } 返回b; }
答案 7 :(得分:0)
MyValue
将等于myInput.value
或0
。
值可以视为False是空字符串(''
),零(0
)等。此代码中True
myInput.value == False
的任何内容
答案 8 :(得分:-1)
这意味着如果未定义myInput.value,则myValue将设置为0. Think ||与OR相同。