`var status = true`不能设置为布尔值,为什么?

时间:2013-04-03 13:29:08

标签: javascript

我的代码非常简单。它检查两个参数。如果第一个参数为false,则更改chrome扩展中的弹出图标,如果它为true且之前为false,则更改图标后退,如果没有传递参数,则返回当前值。

问题是无论哪种方式,变量和作为布尔值传递的第一个参数都被解释为字符串并产生意外结果。这是我的代码:

var status = true;
var reason;
function isReady(statusT, reasonT) {
    "use strict";
    if (statusT === false) {
        chrome.browserAction.setIcon({
            path : "img/blue-sharingan.png"
        });
        status = statusT;
        if (reason !== undefined) {
            reason = reasonT;
            return;
        }
        return;
    }
    if (statusT === true && status === false) {
        chrome.browserAction.setIcon({
            path : "img/icon-32.png"
        });
        status = statusT;
        reason = null;
        return;
    }
    if (statusT === undefined && reasonT === undefined) {
        return {
            'status' : status,
            'reason' : reason
        };
    }
}

我已阅读https://stackoverflow.com/a/653934/792066,但我仍然不知道可能出现的问题。

1 个答案:

答案 0 :(得分:3)

此处的问题是status所附加的内容。您正在全局/窗口范围内使用它。

回到好日子里,我们可以在状态栏中设置文本。如何做到这一点是将window.status设置为字符串值。所以你正在做的不是设置一个变量,而是更改浏览器状态栏的字符串。