我正在调试一些JavaScript,无法解释这个||做什么:

function (title, msg) {
  var title = title || 'Error';
  var msg   = msg || 'Error on Request';
}

为什么这个家伙使用var title = title || 'ERROR'?我有时也看到它没有var声明。

根据R语言的定义,&和&&(对应|和||)的区别在于前者是向量化的,而后者不是。

根据帮助文本,我读到的差异类似于“And”和“AndAlso”之间的差异(相应的“Or”和“OrElse”)… 意义: 不是所有的评估,如果它们不需要(例如,如果A为真,A或B或C总是为真,所以如果A为真,就停止评估)

有人能在这里照亮吗? 还有,R里有AndAlso和OrElse吗?

给出这段JavaScript代码…

var a;
var b = null;
var c = undefined;
var d = 4;
var e = 'five';

var f = a || b || c || d || e;

alert(f); // 4

有人能给我解释一下这个技巧叫什么吗(我最好的猜测是在这个问题的标题中!)?它究竟是如何/为什么工作的?

我的理解是,变量f将被赋给第一个具有非null或未定义值的变量的最近值(从左到右),但我没有设法找到关于这种技术的很多参考资料,并且已经看到它被大量使用。

另外,这种技术是JavaScript特有的吗?我知道在PHP中做类似的事情会导致f有一个真正的布尔值,而不是d本身的值。