javascript - 为什么这些评估方式不一样?

标签 javascript

我今天遇到了一个奇怪的问题,我想知道为什么会发生这种情况...我的印象是,在 javascript 中,任何不明确为 false(false、0 或 NULL)的内容都会返回 true。

将 console.log() 附加到示例 1 中的 isNative 和示例 2 中的 localStorage.getItem(app + ".native_context") 时,均返回“false”。然而,当实际运行这些时,示例 1 在两种情况下都可以工作,但示例 2 无论如何都会返回 true,让我觉得一切都被接受为 true。

示例 1:

var isNative = localStorage.getItem(app + ".native_context");
if (isNative === "true") {
        //do x
    } else {
        //do y
    }
}

示例 2:

if (localStorage.getItem(app + ".native_context")) {
        //do x
    } else {
        //do y
    }
}

谁能解释一下发生了什么?我很想知道。

最佳答案

大多数字符串都是“真实”值:

if('false') {
  alert('A string is usually truthy!');
}

关于javascript - 为什么这些评估方式不一样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39006011/

相关文章:

javascript - 通过 JavaScript 捕获 URL 更改事件

javascript - MVC 中的函数可以跨 Controller 交互吗?

javascript - 从 XMLHttpRequest send() 捕获异步网络错误

javascript - 当我在 Heroku 上部署时 sendGrid 不工作

javascript - ajax 调用后丢失了一个变量。另一个发现

javascript - 如何在特定条件下序列化表单

javascript - React Router 和 Redux - 初始加载数据

javascript - 在提交表单之前单击按钮时显示 div 元素

javascript - Yiiframework 消息弹出

javascript - Socket.io 如何判断某人何时离开