布尔值(“false”)返回true.任何替代方案

Boolean("false") returns true.. any alternative?

本文关键字:true 任何替 方案 返回 false 布尔值      更新时间:2023-09-26

我正在使用jquery向data-html属性写入true和false字符串。但是,当我将false写入其中一个属性,然后将其检查为false时,它将返回true。我还在网上读到它应该这么做,这真的毫无意义。

有人有其他选择吗?任何帮助都将不胜感激!

(function() {
    // $(".opt-header").click(function () {
    $(document).on("click", ".opt-header", function() {
        console.log($(this).attr("data-is-panel-activated"));
        var is_activate = Boolean($(this).attr("data-is-panel-activated"));
        $(this).siblings(":not(.opt-group-toggle)").slideToggle(300);
        console.log(is_activate);
        if (is_activate) {
            $(this).find(".fa-angle-right").replaceWith("<i class='fa fa-angle-down'></i>");
            $(this).attr("data-is-panel-activated", "false");
        } else {
            $(this).attr("data-is-panel-activated", "true");
            $(this).find(".fa-angle-down").replaceWith("<i class='fa fa-angle-right'></i>");
        }
    })
})();

Boolean('false')将返回true,因为字符串'false'是truthy。

您可以运行一个检查,看看字符串是否等于"false":

if ($(this).attr("data-is-panel-activated") === 'false') {
   .....
}

最简单的修复方法是:

var is_activate = $(this).attr("data-is-panel-activated") !== "false";

var is_activate = $(this).attr("data-is-panel-activated") === "true";

这取决于哪种语义对代码更有意义。