我正在调试一些JavaScript,无法解释这个||做什么:
function (title, msg) {
var title = title || 'Error';
var msg = msg || 'Error on Request';
}
为什么这个家伙使用var title = title || 'ERROR'?我有时也看到它没有var声明。
我正在调试一些JavaScript,无法解释这个||做什么:
function (title, msg) {
var title = title || 'Error';
var msg = msg || 'Error on Request';
}
为什么这个家伙使用var title = title || 'ERROR'?我有时也看到它没有var声明。
当前回答
基本上,它检查||之前的值是否为true。如果是,则取该值,如果不是,则取||之后的值。
它将取||之后的值(据我所知):
未定义的 假 0 (Null或空字符串)
其他回答
虽然Cletus的回答是正确的,但我觉得应该在JavaScript中添加更多关于“评估为假”的细节。
var title = title || 'Error';
var msg = msg || 'Error on Request';
不仅仅是检查是否提供了title/msg,而且还检查它们中的任何一个是假的。即下列其中一项:
假的。 0(零) ""(空字符串) null。 未定义的。 NaN(一个特殊的数字值,意思不是一个数字!)
在这一行中
var title = title || 'Error';
如果title为真(即,不是假的,所以title = "titleMessage"等),那么布尔OR(||)运算符已经找到了一个“真”值,这意味着它的计算结果为真,因此它短路并返回真值(title)。
如果title是假的(即上面的列表之一),那么布尔OR(||)运算符已经找到了一个“假”值,现在需要计算运算符的另一部分“Error”,该运算符的计算结果为真,因此返回。
如果运算符两边的值都为false,它也会返回第二个“falsy”运算符(经过一些快速的firebug控制台实验)。
i.e.
return ("" || undefined)
返回undefined,这可能是为了允许您在尝试将title/message默认为""时使用此问题中询问的行为。也就是跑步之后
var foo = undefined
foo = foo || ""
Foo将被设置为""
" x = x || y是什么意思"
分配默认值。
这意味着提供一个y到x的默认值, 如果x还在等待它的值,但还没有收到它,或者为了回到默认值而故意忽略它。
基本上,它检查||之前的值是否为true。如果是,则取该值,如果不是,则取||之后的值。
它将取||之后的值(据我所知):
未定义的 假 0 (Null或空字符串)
||为布尔或运算符。在JavaScript中,undefined, null, 0, false被认为是假值。
它只是意味着
true || true = true
false || true = true
true || false = true
false || false = false
undefined || "value" = "value"
"value" || undefined = "value"
null || "value" = "value"
"value" || null = "value"
0 || "value" = "value"
"value" || 0 = "value"
false || "value" = "value"
"value" || false = "value"
如果没有设置title,则使用'ERROR'作为默认值。
更通用的:
var foobar = foo || default;
读取:将foobar设置为foo或默认值。 你甚至可以把这个串起来很多次:
var foobar = foo || bar || something || 42;