求一种js写法的解释var w=window.innerWidth|| document.documentElement.clientWidth|| document.body.clientWidth;这里的变量w为什么可以用或的关系表示呢?

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/29 09:36:02
求一种js写法的解释var w=window.innerWidth|| document.documentElement.clientWidth|| document.body.clientWidth;这里的变量w为什么可以用或的关系表示呢?

求一种js写法的解释var w=window.innerWidth|| document.documentElement.clientWidth|| document.body.clientWidth;这里的变量w为什么可以用或的关系表示呢?
求一种js写法的解释
var w=window.innerWidth
|| document.documentElement.clientWidth
|| document.body.clientWidth;
这里的变量w为什么可以用或的关系表示呢?

求一种js写法的解释var w=window.innerWidth|| document.documentElement.clientWidth|| document.body.clientWidth;这里的变量w为什么可以用或的关系表示呢?
首先,这里的||你可以变相跟C#中的?放一起来考虑,另外你需要知道在js中,像数值0,空字符串,空值,undefined等这些在跟bool值做比对的时候都是false,而其他都为true,那么这里
var w=window.innerWidth
|| document.documentElement.clientWidth
|| document.body.clientWidth;
如果第一个为0,那么看第二个,如果第二个也为0(即false),那么看第三个,直到有一个非0位置,也就是说非false为止,就返回该值

或者也可以这么理解成if-elseif-else,即这里的
var w;
if(window.innerWidth!=0/undefined/...等其他)
{
    w=window.innerWidth;
}
elseif(document.documentElement.clientWidth!=0/其他)
{
    w=document.documentElement.clientWidth;
}
elseif(...){...}
else{    ...   }
 用非运算符只是精简写法而已,同三元表达式,linq等,目的都是为了精简代码