我是一种新的JavaScript,今天我正在研究一个基本上切换值并将其显示为alert的函数,但我偶然发现了一个与JavaScript有关的奇怪行为到真/假和0/1。true/false vs int in JavaScript(意外的行为)
下面的代码,当用户点击切换锚链接,它似乎并没有切换值及警报总是给人“真”(我认为应该发生):
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
指针我使用的功能什么的?
你为什么不使用===代替==? – zhuravlyov
与其他语言相比,JavaScript有一个更复杂的平等概念,但幸运的是,它是一个很好理解的概念;看看[这篇文章](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Equality_comparisons_and_sameness)的介绍 – Hamms