【发布时间】:2011-02-17 15:01:28
【问题描述】:
我正在调试一些 JavaScript,但无法解释 || 的作用:
function (title, msg) {
var title = title || 'Error';
var msg = msg || 'Error on Request';
}
为什么这个人使用var title = title || 'ERROR'?我有时也会看到它没有 var 声明。
【问题讨论】:
-
人们已经回答了这个问题......但要特别注意如果第一个值是
falsy,而不是undefined,则选择第二个值。我看到doWeDoIt = doWeDoIt || true的次数足以让我哭泣。 (即doWeDoIt现在永远不会是false) -
对于那些有 C# 经验的人来说,双管道运算符相当于 null-coalesce 运算符
??。 Javascript 评估非空对象 liketrue(或更好地将空对象评估为假) -
不要难过 - JS 是唯一一种允许这种可怕编码的愚蠢语言......并教导将每个函数嵌套到代码行中并将它们扔掉使它们一次性使用是正确的第二次无法使用。 :) 我从事编码工作已经 30 年了,直到不久前我自己才接触 JS,我能感觉到你的痛苦,我只能说,保持“没有任何意义,它只在 JS 中”的便条纸方便,这是我唯一的方法已经过去了! :)
-
请考虑将接受的答案更改为my answer。
-
@usr-local-ΕΨΗΕΛΩΝ - 我看到了那个日期,并且涵盖了那个时间范围:在添加之前,与 null-coelesce 等价的正确值是
value != null ? value : YOUR_DEFAULT。 将||当作null coalesce使用从来都不是一个好习惯。如果您遇到任何“虚假”值,但将其视为“非空”而不是“非虚假”,则会出现微妙的错误。也许打电话给||“真正的合并操作员”? :)
标签: javascript parameters optional-parameters or-operator