在C语言中,我知道True和False分别评估为1和0。show
在这种情况下只是打印到屏幕上...不确定发生了什么。我希望能够收到true
的回复。这个1
搞乱了我的节奏。
show(1 && true);
true
show(true && 1);
1
在C语言中,我知道True和False分别评估为1和0。show
在这种情况下只是打印到屏幕上...不确定发生了什么。我希望能够收到true
的回复。这个1
搞乱了我的节奏。
show(1 && true);
true
show(true && 1);
1
&&
的定义。在Javascript中,a && b
会返回a
,如果a
为假,并且返回b
,如果a
为真。a || b
会返回a
,如果a
为真并且返回b
,如果a
为假。a && b
中a
是false,那么为什么还要读取表达式的其余部分呢?你已经知道整个表达式都是false。所以只需返回false。但是Javascript决定返回a
,它是假的,而不是从无处返回值false
。var foo = function(opts) {
opts = opts || {}
// ...
}
实现一个可选参数opts
。如果根本不传递opts
,opts = opts || {}
将会把opts
设置为{}
,这样代码的其余部分就不需要知道opts
未被传递。
长式写法等价于以下内容:
var x = a || b; // is equivalent to
var x;
if(a) {
x = a;
}
else {
x = b;
}
和
var y = a && b; // is equivalent to
var y;
if(!a) {
y = a;
}
else {
y = b;
}
var displayName = user.fullname || user.email;
||
比使用短路运算符&&
更加常见,就像您提出的问题一样。window.foo || (window.foo = {});
- Labu