var isSignInside = new Boolean(someCondition);
if (!isSignInside) {
//doStuff
}
else {
//doOtherStuff
}
现在,如果isSignInside
是false
(调试器告诉我),脚本仍会跳转到//doOtherStuff
。怎么会这样?
其余的片段并不重要,但如果被问及我可以分享。
当然有一个我不明白的简单解释。提前致谢。
修改
someCondition确实是一个自定义方法“强制”返回bool而不是(否则)返回一个字符串。
修改:直接在if中使用该功能。需要一些棘手的paranthesis,但现在工作。感谢(布尔)对象永远不能===到静态布尔基元的提示。地狱这个论坛很快。
答案 0 :(得分:4)
创建布尔对象时,它是对象。对它的引用,无论它表示的布尔基元值如何,都将像任何其他非空对象引用一样进行测试。
构造像这样的布尔实例一般没有意义:
var isSignInside = !!someCondition;
那将给你一个布尔原语,反映你病情的真实/虚假状态。
答案 1 :(得分:2)
if(new Boolean(false)) alert("hehe");
实际上, isSignedInside 不是布尔值,而是布尔对象(感谢 new )。您可能希望获得其原始值以进行比较:
if( (new Boolean(false)).valueOf() ) alert("hehe");
甚至更容易,直接取值。
答案 2 :(得分:1)
那不是那样做的。您想使用布尔基元。你正在尝试做的就是这样:
var isSignInside = (someCondition);
if (isSignInside === false) {
//doStuff
}
else {
//doOtherStuff
}