我碰巧知道以下代码:
这是代码,非常简单:
var test = 0 || -1 ;
console.log(test);
如果在控制台中输出为-1
我对JavaScript还很陌生,我的理解是在JS中0代表布尔值False,因此||
运算符似乎会忽略0并将值-1分配给变量。
那么我的理解正确吗?我只是想确认一下。
我碰巧知道以下代码:
这是代码,非常简单:
var test = 0 || -1 ;
console.log(test);
如果在控制台中输出为-1
我对JavaScript还很陌生,我的理解是在JS中0代表布尔值False,因此||
运算符似乎会忽略0并将值-1分配给变量。
那么我的理解正确吗?我只是想确认一下。
||
— expr1 || expr2
(逻辑或)
如果expr1可以转换为true,则返回expr1;否则返回expr2。因此,当用于布尔值时,|| 如果任一操作数为true,则返回true;如果两个操作数都为false,则返回false。
&&
— expr1 && expr2
(逻辑与)
如果expr1可以转换为false,则返回expr1;否则返回expr2。因此,当用于布尔值时,&& 如果两个操作数都为true,则返回true;否则返回false。
Javascript中的所有值都是真值(truthy)或假值(falsy)。
以下值在条件语句中等价于false:
""
(\ ''
)所有其他值都等价于true。
所以... var test = 0 || -1 ;
返回 -1
。
如果是 var test = 0 || false || undefined || "" || 2 || -1
,它将返回 2
console.log('0 ?? 1 ->', 0 ?? 1) // expected output: 0
console.log('null ?? 1 -> ', null ?? 1) // expected output: 1
console.log('undefined ?? 1 ->', undefined ?? 1) // expected output: 1
console.log('"" ?? 1 ->', "" ?? 1) // expected output: ""
var user =function (ops) { return { firstName: ops.name || 'John', lastName: ops.name || 'Doe', email: ops.email || 'test@test.com', name:function () {return this .firstName +this .lastName}}}
--所以,我猜它会分配第一个值,如果它们是“真实的”(已定义),否则第二个值是默认值? - Fuhrmanator