var pScrolltop = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop;
这里的 “ || ” 最终是怎么运算的,想不太明白,有知道的给解解惑!
这个是或运算符,跟其他语言的运算符可能不同.
它会把第一个数转换为布尔类型,然后判断真假,如果为真,那么就返回第一个原来的数,如果为假,就返回第二个数,一次类推.
所以常常看到这样的代码
result = result || [];
如果result为null 或者undefined,那就就返回[];
&& 的原理也是一样.
如果第一个数为假,那么就返回第一个数的值,如果为真,那么返回第二个数的值.
这里的值都是数值本身,而不是布尔值.
document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop
从前往后 返回第一个不为0的值
你可以理解成,这是一种用来取兼容性值的好方法,要么用ifelse,因为javascript不同于别的语言,在它里面只要是null,undefined,'',0,这些都属于false,浏览器实现javascriptAPI的写法不同,会导致document.documentElement.scrollTop在火狐浏览器下是undefined的情况(举例),也就是false,||有着返回结果为true的特性,所以一旦浏览器下不是undefined就返回这个值,这样不同浏览识别一个实现,就可以解决兼容性问题。