【发布时间】:2016-02-10 18:41:11
【问题描述】:
我正在使用相当简单的 JavaScript 开发网页。我的整个 JavaScript 代码是:
function showUnlockPopup(isViolated,instId,unlock_done,unlock_total,period,endDate){
alert(isViolated);
if(isViolated){
if(unlock_done < unlock_total){
showInfoPopup(instId,unlock_done,unlock_total,period);
} else {
showNoUnlocksPopup(instId,unlock_done,unlock_total,period,endDate);
}
} else {
showNotViolatedModal();
}
}
但是,无论“isViolated”变量的值如何,都会调用我的“showInfoPopup”函数。
我也检查了方法调用的代码:
<button onClick="showUnlockPopup(isViolated)">Unlock</button>
警报正确显示“真”或“假”值,但逻辑仅针对“真”运行,而与值无关。
我想我在这里遗漏了一些相当基本的东西。我尝试了很多,但没有用。请帮助我。
【问题讨论】:
-
作为
isViolated变量传递的类型/值是什么?如果是 "true" 和 "false" 的字符串,javascript 会将两者都视为 true。 -
PROTIP:使用
console.log进行调试,而不是alert。 -
调试你的程序。在
if (isViolated)行上放置一个断点,并检查isViolated的值。 -
我假设在你没有显示的地方有一个
}。 -
@AdhishThite: “它肯定是一个布尔值,因为它已经在代码中以这种方式声明了。” JavaScript 变量声明是无类型的。 “如果我写 !isViolated,那么 else 条件就会被执行。” 这并不意味着它是布尔值。
标签: javascript if-statement boolean