在javascript中| |的正确用法是什么

在javascript中| |的正确用法是什么,javascript,Javascript,在下面的代码中,因为s为null d=“test” 但是如果s=“hello”,那么d将=“hello” 这是正确的吗?正确的使用方法是什么|| var s = null; var d = s || "test"; alert(d); 是,它是正确的,除非允许s为空或0,这也是错误的值 var s = null; var d = s || "test"; var s = 0; var d = s || "test"; var s = ""; var d = s || "test";

在下面的代码中,因为s为null d=“test” 但是如果s=“hello”,那么d将=“hello”

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

var s = null;

var d = s || "test";

alert(d);

是,它是正确的,除非允许s为空或0,这也是错误的值

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

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

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

所有这些都将导致d为“test”

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

这是可行的,但如果s的计算结果为“falsy”值,您将获得默认值,这可能不是您想要的。一个更有力但冗长的习语是

d = (typeof s === "undefined") ? "test" : s;

|
是javascript中的
运算符
因此
a | | b
简单地说就是
a或b
对您提出的问题的解释是,您只需在js中执行类似的操作,最终就会进入else块

if(null)
if(undefined)
因此,
s | | |“test”
将意味着哪个值不为null或未定义 在这种情况下,哪个是test是“或”;理解这里发生的事情有点诡计

var a=false;
var b=true;
result=a||b
将给出“结果”为真(如b为真)。发生的情况是:

  • 已选中“a”-它为false
  • 之后检查“b”(因为尚未获得“真”结果,一个“真”结果足以使整个| |运算符为真)-它的值将分配到左侧
如果你有

   var a=true;
   var b="test";
   result=a||b
结果会是真的;因为没有其他值需要通过“| |”逻辑进行检查

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


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

是的,正确,| |符号只执行OR的工作。当第一个条件为真时,它将返回该条件。。否则它将移动到下一个。。。虽然很简单

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