【问题标题】:Why does var name = 'jose' !== ''; return "true" and not true? [duplicate]为什么 var name = 'jose' !== '';返回“真”而不是真的? [复制]
【发布时间】:2016-09-06 05:18:48
【问题描述】:

当我在控制台中运行var name = 'jose' !== ''; 时,它返回"true"

为什么它返回 "true" 作为字符串而不是 true 作为布尔值?

我尝试使用不同的变量名,它返回一个布尔值。 即:var bobby = 'bob' !== '';

【问题讨论】:

    标签: javascript string boolean comparison


    【解决方案1】:

    因为namewindow.name。始终为字符串的特殊变量。在任何空浏览器的控制台中输入它,你会得到""

    你在你的声明中重新分配了它的价值。

    https://developer.mozilla.org/en-US/docs/Web/API/Window/name

    【讨论】:

    • 上例中的 bobby 怎么样?
    • @guradio var bobby 是不同的变量名,所以它不在字符串中。
    • 没有window.bobby
    • 不应该var name 强制它是本地的吗?
    • @andrewdotnich 仅当它在函数内部时——如果它不在函数内部,则范围为window
    【解决方案2】:

    变量name。它指的是window.name,即窗口的名称。

    也是变量document

    window.name ,window.document [不能将var name从window.name改为字符串]

    不要将名称用作全局变量。

    例如

    var name = {Name : "dd"};
    console.log(name.Name);//Since it's a primitive won't work
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-02-05
      • 2016-02-20
      • 2011-12-18
      • 2013-11-09
      • 2017-11-17
      • 2020-09-04
      相关资源
      最近更新 更多