我正在学习JavaScript中的Promise。但是,当我尝试编写一些代码行时,出现了这个问题。我在Promise Obj中声明的“ if”语句始终返回true。这是信息:
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'
});
}
});
答案 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'
});
}
});
}());