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

更多信息:

  • 内部操作

@lincolnk:如果未声明
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语言规范的,它们是跨浏览器一致实现的。