0

在下面的代码中,因为 s 为空 d = "test" 但如果 s = "hello" 那么 d 将 = "hello"。

这是正确的吗?正确的使用方法是什么||

var s = null;

var d = s || "test";

alert(d);
4

6 回答 6

3

|| 是“或”;理解这里发生的事情有点棘手

var a=false;
var b=true;
result=a||b

将给出“结果”为真(因为 b 为真)。会发生什么:

  • 'a' 被选中 - 它是错误的
  • 'b' 在之后检查(因为尚未获得“真”结果,一个“真”结果足以使整个 || 运算符为真) - 它的值将分配给左侧

如果你有

   var a=true;
   var b="test";
   result=a||b

结果将产生真;因为“||”的逻辑不需要检查其他值

var a=null;
var b="test";
result=a||b;

a 将首先被检查 - 它是 null,它转换为“false”。b 是“test”,它是非空的,并转换为“true”。因此将分配 b的值。

是的,这是使用 || 的正确方法 ; 您使用的功能也称为短路评估(因为它会尽早停止评估布尔表达式)

于 2012-07-11T06:38:38.550 回答
2

这可行,但如果 s 评估为“虚假”值,您将获得默认值,这可能不是您想要的。一个更健壮但冗长的习语是

d = (typeof s === "undefined") ? "test" : s;
于 2012-07-11T06:36:21.987 回答
1

是的,除非 s 允许为空白或 0,它们也是错误值,否则它是正确的

var s = null;
var d = s || "test";

var s = 0;
var d = s || "test";

var s = "";
var d = s || "test";

所有将导致 d 成为“测试”

于 2012-07-11T06:33:47.510 回答
1

||是一个逻辑运算符。当 s 不为 null 时, (s) 的条件为真,因此 d 被赋予 s 的值,否则被赋予“test”

于 2012-07-11T06:35:20.227 回答
1

||ORjavascript 中的运算符,
所以简单来说a||b, 对您提出的问题的解释是 id 您只需在 js 中执行类似的操作,您最终将进入 else 块a OR b

if(null)
if(undefined)

所以s||"test"将意味着 which ever 不是 null 或 undefined 在这种情况下是 test

于 2012-07-11T06:37:30.310 回答
1

是的,正确的,|| 符号只是做 OR 的工作。当第一个条件为真时,它会返回那个..否则它将移动到下一个......很简单......

于 2012-07-11T06:48:12.163 回答