伙计我做错了什么?在我的电脑上这段代码:simple toggle显示我假= =当我第一次调用该函数时为真。当状态为假时为什么会继续?
var status = false;
function toggleStatus() {
var message = "status:" + status;
if (status === false) {
message += "===FALSE";
status=true;
} else {
message += "===TRUE";
status=false;
}
alert(message);
}
答案 0 :(得分:0)
这是因为已经定义了window.status(这是一个字符串,用于浏览器状态栏中的文本)。
因为您没有从代码中保护全局命名空间,所以状态变量被定义为窗口对象上的全局。据推测,浏览器将全力以赴。
然而,这应该有效https://jsfiddle.net/72rf8g8p/:
(function(){
var status = false;
function toggleStatus() {
var message = "status:" + status;
if (status === false) {
message += "===FALSE";
status=true;
} else {
message += "===TRUE";
status=false;
}
alert(message);
}
toggleStatus();
})();
您也可以简单地将变量名称更改为其他名称,例如myStatus:
var myStatus= false;
function toggleStatus() {
var message = "myStatus:" + myStatus;
if (myStatus=== false) {
message += "===FALSE";
myStatus=true;
} else {
message += "===TRUE";
myStatus=false;
}
alert(message);
}