在JavaScript中,什么强制来自空比较?
如果我有这个JavaScript在JavaScript中,什么强制来自空比较?,javascript,Javascript,如果我有这个JavaScript var someVar = someOtherVar == null; 哪些someOtherVar值会导致someVar为真? 注意:根据我所读的,如果someOtherVar是未定义的,那么someVar将为真。但是为了使用这种比较风格,我改变了很多代码,我想确保没有其他东西会导致真实的语句(除了null和undefined) someOtherVar的哪些值将导致someVar为true 仅null和未定义 : 如果类型(x)与类型(y)相同,则返回执行
var someVar = someOtherVar == null;
哪些someOtherVar
值会导致someVar
为真?
注意:根据我所读的,如果someOtherVar
是未定义的
,那么someVar
将为真。但是为了使用这种比较风格,我改变了很多代码,我想确保没有其他东西会导致真实的语句(除了null
和undefined
)
someOtherVar
的哪些值将导致someVar
为true
仅null
和未定义
:
类型(x)
与类型(y)
相同,则返回执行的结果x
为null且y
为未定义,则返回truex
为未定义且y
为空,则返回真Type(x)
是数字而Type(y)
是字符串,则返回比较结果x==ToNumber(y)
Type(x)
是字符串而Type(y)
是数字,则返回比较结果ToNumber(x)==y
Type(x)
是布尔值,则返回比较结果ToNumber(x)=y
Type(y)
是布尔值,则返回比较结果x==ToNumber(y)
Type(x)
是字符串、数字或符号,而Type(y)
是对象,则返回比较结果x==ToPrimitive(y)
Type(x)
是对象,而Type(y)
是字符串、数字或符号,则返回比较结果ToPrimitive(x)==y
null==null
。第2步和第3步处理案例null==undefined
和undefined==null
。第6步和第7步处理另一个值为布尔值的情况,因此最后将一个数字与null
进行比较。由于null
不是对象、数字、字符串、布尔值或符号,因此不适用其他步骤,因此返回false
(步骤10)
在JavaScript中,什么强制来自空比较 只有当另一个值是布尔值时,它才会被强制为一个数字,因此您最终会比较
0==null
或1==null
,两者都是false
在所有其他情况下,没有发生类型强制(没有任何内容强制为null
,并且null
没有强制为任何其他数据类型)
someOtherVar
的哪些值将导致someVar
为true
仅null
和未定义
:
类型(x)
与类型(y)
相同,则返回执行的结果x
为null且y
为未定义,则返回truex
为未定义且y
为空,则返回真Type(x)
是数字而Type(y)
是字符串,则返回比较结果x==ToNumber(y)
Type(x)
是字符串而Type(y)
是数字,则返回比较结果ToNumber(x)==y
Type(x)
是布尔值,则返回比较结果ToNumber(x)=y
Type(y)
是布尔值,则返回比较结果x==ToNumber(y)
Type(x)
是字符串、数字或符号,而Type(y)
是对象,则返回比较结果x==ToPrimitive(y)
Type(x)
是对象,而Type(y)
是字符串、数字或符号,则返回比较结果ToPrimitive(x)==y
null==null
。第2步和第3步处理案例null==undefined
和undefined==null
。第6步和第7步处理另一个值为布尔值的情况,因此最后将一个数字与null
进行比较。由于null
不是对象、数字、字符串、布尔值或符号,因此不适用其他步骤,因此返回false
(步骤10)
在JavaScript中,什么强制来自空比较 只有当另一个值是布尔值时,它才会被强制为一个数字,因此您最终会比较
0==null
或1==null
,两者都是false
在所有其他情况下,没有发生类型强制(没有任何内容被强制为
null
,并且null
没有被强制为任何其他数据类型)。看起来只有null
和未定义
事实上:
const arr=['string',true,false,0,null,未定义,NaN,{},[],4,-1,-0];
常数r=arr.map((e,i)=>{
返回{i,e,bool:e==null}
}).filter(e=>e.bool);
//返回导致“null”的元素
//i:初始数组“arr”内的索引
log(JSON.stringify(r,null,2))代码>看起来只有null
和undefined
实际上:
const arr=['string',true,false,0,null,未定义,NaN,{},[],4,-1,-0];
常数r=arr.map((e,i)=>{
返回{i,e,bool:e==null}
}).filter(e=>e.bool);
//返回导致“null”的元素
//i:初始数组“arr”内的索引
log(JSON.stringify(r,null,2))代码>根据我的理解