if子句内的JavaScript false/null变量
什么样的变量不会通过此过程:if子句内的JavaScript false/null变量,javascript,if-statement,boolean,Javascript,If Statement,Boolean,什么样的变量不会通过此过程: if(myVar){//code} 布尔值为假?无效的布尔值为false和NULL?还有别的吗 谢谢。以下所有falsy值如下: null 未定义 NaN 0 ”(空字符串) false 任何其他转换为布尔值的操作都将产生true 更多信息: 内部操作 @lincolnk:如果未声明myVar,您将收到ReferenceError。可以声明变量并将undefined作为其值,例如,当您声明变量而不使用值初始化它时:var myVar它将被声明,但未初始化,它将
if(myVar){//code}
布尔值为假?无效的布尔值为false和NULL?还有别的吗
谢谢。以下所有falsy值如下:
null
未定义
NaN
0
(空字符串)”
false
true
更多信息:
- 内部操作
myVar
,您将收到ReferenceError
。可以声明变量并将undefined
作为其值,例如,当您声明变量而不使用值初始化它时:var myVar代码>它将被声明,但未初始化,它将保持未定义
作为其值,例如警报(myVar)代码>将提示“未定义”
。在某些情况下,您还可以为其分配undefined
值,例如myVar=undefined代码>。记住,未申报的!=<代码>未定义
好的,这一切都有意义typeof
在IE中生成“undefined”,这让我很反感。@lincolnk:是的,如果的操作数表达式是一个不可解析的引用(在作用域链中不存在),它将显式返回字符串“undefined”
-请注意,上面所有的值都是基元值,任何对象,甚至布尔对象包装器也会始终生成true
,例如:if(new Boolean(false)){alert('Javascript FTW!');}
-@Francisc:string,转换为布尔值时,仅当其长度为0
(空字符串)时才会生成false
,而“0”
(其长度为1
). 您可以通过alert(!!“0”)代码>或警报(布尔值(“0”)代码>这将为您提供true
。是的,我描述的值是基于ECMAScript语言规范的,它们是跨浏览器一致实现的。