or运算符在这段JavaScript中做什么?

or运算符在这段JavaScript中做什么?,javascript,Javascript,所以我在浏览JQuery源代码以获得更好的编程技巧,我发现了一些我不确定发生了什么的代码 type = type || callback; 有人能解释一下OR | |在变量赋值中的作用吗 我做了一些实验,设置和取消设置值等等,但我一点也不知道。如果type是一个“假”值,那么callback的值将分配给type变量,否则将分配type var val, a, b, c; a = undefined; b = null; c = "C"; val = a || b || c; alert(val

所以我在浏览JQuery源代码以获得更好的编程技巧,我发现了一些我不确定发生了什么的代码

type = type || callback;
有人能解释一下OR | |在变量赋值中的作用吗

我做了一些实验,设置和取消设置值等等,但我一点也不知道。

如果
type
是一个“假”值,那么
callback
的值将分配给
type
变量,否则将分配
type

var val, a, b, c;
a = undefined;
b = null;
c = "C";
val = a || b || c;
alert(val);
“假”值为:

  • false
  • null
  • 未定义
  • 0
  • (空字符串)
  • NaN
因此,基本上它说“如果
type
是任何一个错误值,则用
callback
替换
type

考虑这一点:

var type = undefined;

type = type || "default value";
类型
变量最终将被分配
“默认值”

var val, a, b, c;
a = undefined;
b = null;
c = "C";
val = a || b || c;
alert(val);
如果是这样的话:

var type = "some value";

type = type || "default value";
然后它将保留其
“some value”

它将变量“type”设置为其当前值,或者如果当前值不是“truthy”,则设置“callback”的值。如果“type”是
undefined
,或
null
,或0,或空字符串,或布尔值
false
,则将其设置为“callback”值


编辑oops或
NaN

以便我看到多个变量可以“链接”在一起,并分配第一个“非错误”值

var val, a, b, c;
a = undefined;
b = null;
c = "C";
val = a || b || c;
alert(val);
那真他妈的方便。

a | | |(b | | c)
我觉得不对。您不需要检查默认值是否为falsy。