在下面的代码中,因为s为null d =“test” 但如果s =“你好”那么d就会=“你好”。
这是正确的吗?什么是正确的使用方式||
var s = null;
var d = s || "test";
alert(d);
答案 0 :(得分:3)
||是“或”;并且理解这里发生的事情有点诡计
var a=false;
var b=true;
result=a||b
将“result”为真(因为b为真)。会发生什么:
如果你有
var a=true;
var b="test";
result=a||b
结果将产生真实;因为“||”
的逻辑不需要检查其他值带
var a=null;
var b="test";
result=a||b;
将首先检查a - 它为null,转换为“false”。 b是“test”,它是非null,并转换为“true”。所以b的值将被分配。
是的,这是使用||的正确方法;您使用的功能也称为短路评估(因为它会尽快停止评估布尔表达式)
答案 1 :(得分:2)
这样可行,但如果s评估为'falsy'值,您将获得默认值,这可能不是您想要的。
是一个更健壮,但更生气的习语d = (typeof s === "undefined") ? "test" : s;
答案 2 :(得分:1)
是正确的,除非允许s为空或0也是假值
var s = null;
var d = s || "test";
var s = 0;
var d = s || "test";
var s = "";
var d = s || "test";
所有这些都会导致d成为“测试”
答案 3 :(得分:1)
||
是一个逻辑运算符。当s不为null时,(s)的条件为真,所以d被赋值为s,否则赋值为'test'
答案 4 :(得分:1)
||
是javascript中的OR
运算符
所以a||b
简单来说就是a OR b
你问过的问题的解释是你只是在js中做这些事情,你最终会进入其他区块
if(null)
if(undefined)
所以s||"test"
意味着哪个不是null或未定义
在这种情况下是测试
答案 5 :(得分:1)
是的,||符号只是做OR的工作。当第一个条件为真时,它会返回那个......否则它将移动到下一个......简单就是......