当我们为变量赋值时,最好使用||运营商还是?操作
示例:
OR
var x = window.scrollX || window.pageXOffset;
三元
var x = "scrollX" in window ? window.scrollX : window.pageXOffset;
最好的方法是什么?
答案 0 :(得分:1)
这两者并不相同
在第一个版本中,您检查scrollX值是否为'。也就是说,如果它是undefined,false,null,0等等
在第二个版本中,您检查窗口对象是否具有scrollX
属性。
例如:
如果您使用第一个值且scrollX
值为0
,则它将使用pageXOffset
属性值,而在版本2中,它将使用scrollX
值。< / p>
在控制台中尝试:
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);
答案 1 :(得分:0)
var x = window.scrollX || window.pageXOffset;
以上方法有一些副作用。在这种情况下,JS中存在短路结构。无论window.scrollX采用什么,总是会被接受。除非未定义,否则x的所有结果都是window.scrollX