Promise中的比较表达式始终返回true

时间:2018-10-26 12:57:11

标签: javascript promise

我正在学习JavaScript中的Promise。但是,当我尝试编写一些代码行时,出现了这个问题。我在Promise Obj中声明的“ if”语句始终返回true。这是信息:

  • 环境:Chrome开发工具-Chrome开发工具-Chromium 64.0.3282.140
  • 代码:

var status = false;
var promise = new Promise(function(resolve, reject) {
  if (status) {
    console.log("TRUE")
    resolve({
      value: 'true'
    });
  } else {
    console.log("FALSE");
    reject({
      value: 'false'
    });
  }
});

  • 预期输出:FALSE
  • 发生了什么事:是
  • 通知:无论“状态”的值是什么,输出始终为true。
    我真的在这里寻找我的问题的解释。非常感谢。

1 个答案:

答案 0 :(得分:9)

status is a predefined variable在浏览器中。

为它分配值时,它会强制转换为字符串。

false变为"false",这是一个真实值。

这就是为什么您应该避免使用全局变量。与其他人的变量发生冲突从来都不是一件有趣的事。


将代码包装在IIFE中,以避免尝试在全局范围内创建变量。

(function() {

  var status = false;
  var promise = new Promise(function(resolve, reject) {
    if (status) {
      console.log("TRUE")
      resolve({
        value: 'true'
      });
    } else {
      console.log("FALSE");
      reject({
        value: 'false'
      });
    }
  });

}());