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

来源:学生作业帮助网 编辑:作业帮 时间:2024/06/30 10:18:44
求一种js写法的解释var w=window.innerWidth|| document.documentElement.clientWidth|| document.body.clientWidth;这里的变量w为什么可以用或的关系表示呢?
xTNQ&&M"C:A f0EA*hՑϜ< 3G-hh2gξ}Y{Oh-cCeks fŽdTV|SV)FͿ;IwH}6 1` >>M~LB$o)=nZ#z+,{DN6YͿYߛxî'2ՏmF}v⟫pJLKEvr-1͏X*/3˖MG#kMЛNw?#mNi1-͝wXAx6`9gIhGljr؀^edK Pnml&ݮ{]NX Eq o-C86 V.{ԡ@y ]|, Xf3nяgvcuU<8V\#a&`yG:: {8 Nhd=l7qEB3ʔ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等,目的都是为了精简代码