最佳实践 "OR" 和 "Ternary" 运算符

Best practice "OR" and "Ternary" operators

当我们为变量赋值时,最好使用 ||运营商或?运算符?

示例:

var x = window.scrollX || window.pageXOffset;

三元

var x = "scrollX" in window ? window.scrollX : window.pageXOffset;

最好的方法是什么?

var x = window.scrollX || window.pageXOffset;

以上方法有一些副作用。在这种情况下,JS中存在短路结构。无论 window.scrollX 接受什么,它总是会被接受。除非未定义,否则 x 的所有结果都是 window.scrollX

两者不等价
在第一个版本中,您检查 scrollX 值是否 'is'。也就是说,如果它是 undefined、false、null、0 等等。
在第二个版本中,您检查 window 对象是否具有 scrollX 属性。

例如:
如果您使用第一个并且 scrollX 值为 0,它将使用 pageXOffset 属性 值,而在版本二中,它将使用 scrollX值。

在控制台试试这个:

var a = { x: 0, y: 1 };
var or = a.x || a.y;
var tern = 'x' in a ? a.x : a.y;

console.log('or: ' + or);
console.log('tern: ' + tern);