【发布时间】:2018-03-11 21:59:14
【问题描述】:
我是 javascript 的新手,今天我正在研究一个基本上切换值并将其显示为警报的函数,但我偶然发现了 JavaScript 与真/假和 0/1 相关的奇怪行为。
以下代码,当用户点击切换锚链接时,它似乎没有切换值,并且警报总是给出“真”(我认为应该发生):
document.body.innerHTML = '<a href="#" id="toggle"> toggle </a>'+ document.body.innerHTML;
function f() {
this.status = true;
var btn = document.getElementById("toggle")
btn.addEventListener("click", () => {
if (this.status == true) {
alert(this.status)
this.status = false;
} else {
alert(this.status)
this.status = true;
}
}, false)
}
f()
但如果我使用 0 和 1 而不是真/假,代码会出于某种原因工作。
document.body.innerHTML = '<a href="#" id="toggle"> toggle </a>' +document.body.innerHTML;
function f() {
this.status = 1;
var btn = document.getElementById("toggle")
btn.addEventListener("click",()=>{
if(this.status==1){
alert(this.status)
this.status = 0;
}else{
alert(this.status)
this.status = 1;
}
},false)
}
f()
我不知道这里发生了什么,这是因为我在函数中使用了this 指针还是什么?
【问题讨论】:
-
为什么不使用 === 而不是 == ?
-
JavaScript 有一个比你可能熟悉的其他语言更复杂的相等概念,但幸运的是它是一个很好理解的概念;查看this article了解简介
标签: javascript html function dom this