【问题标题】:JavaScript false/null var inside if clauseif 子句中的 JavaScript false/null var
【发布时间】:2010-09-30 20:15:03
【问题描述】:

什么样的变量会通过这个:

if(myVar){//code}

布尔假?无效的?布尔假和空?还有什么?

谢谢。

【问题讨论】:

    标签: javascript if-statement boolean


    【解决方案1】:

    以下所有 falsy 值为:

    • null
    • undefined
    • NaN
    • 0
    • "" (一个空字符串)
    • false

    任何其他转换为布尔值的都将产生true

    更多信息:

    【讨论】:

    • @lincolnk:如果myVar 未声明,您将获得ReferenceError。一个变量可以被声明并持有undefined作为它的值,例如,当你声明一个变量而不用一个值初始化它时:var myVar;它将被声明,但未初始化,它将持有undefined 作为它的值,例如alert(myVar); 将提醒"undefined"。在某些时候,您还可以为其分配 undefined 值,例如myVar = undefined;。请记住,未声明 != undefined
    • 好的,这一切都说得通。 typeof <undeclared name> 在 IE 中生成“未定义”,这让我很失望。
    • @lincolnk: 是的,如果typeof operator 的操作数表达式是一个无法解析的引用(它在作用域链中不存在),将显式返回字符串"undefined".
    • - 注意以上都是原始值,任何对象,甚至布尔对象包装器都会产生true,例如:if (new Boolean(false)) { alert('Javascript FTW!'); } -
    • @Francisc: 一个字符串,转换为布尔值时会产生false 只有当它的长度是0(一个空字符串),这不是@987654348的情况@(它的长度是1)。您可以通过alert(!!"0");alert(Boolean("0")); 轻松测试它,这将为您提供true。是的,我描述的值是基于 ECMAScript 语言规范的,它们是跨浏览器一致地实现的。
    猜你喜欢
    • 2011-04-12
    • 2014-11-05
    • 2010-11-17
    • 1970-01-01
    • 2015-03-28
    • 1970-01-01
    • 2014-05-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多