gpt4 book ai didi

javascript - 如果 console.log 为空,为什么 == 工作但 === 不工作?

转载 作者:行者123 更新时间:2023-11-30 06:51:42 26 4
gpt4 key购买 nike

请回答一般的 javascript 问题。

我有一个按钮,可以标记用户是否要将帖子分享到 Facebook。单击时,它将检查用户是否已经拥有 Facebook token 。此外, token 是否有效。

如果两者都不成立,它会提示用户登录 facebook。

现在代码工作得很好。但是很长一段时间我都在做 if(facebookToken === null)

它忽略了它。直到我切换到 == 才起作用。

这是为什么?我正在控制台记录它,它返回为 null

这是我的代码:

  shareToFacebookPress() {
const timeNow = Date.now();
const facebookToken = this.props.facebook_token;
console.log(facebookToken);
const facebookExpiry = this.props.facebook_token_expiry * 1000;
console.log(facebookExpiry);
if (facebookToken == null || facebookExpiry < timeNow) {
console.log("doesn't exist");
this.props.signInFacebook();
} else {
this.state.shareToFacebook ?
this.setState({ shareToFacebook: false }) :
this.setState({ shareToFacebook: true });
}
}

肯定 === 直接比较,所以如果我在控制台登录值并返回 null,肯定是 if(value === null ) 应该等于 true 吗?

这似乎是不可能的。这里发生了什么?

if value 控制台记录到 null 而我做 if(value === null) 为什么这不等于 ?

当然,如果它是控制台日志记录 null 那么它一定是它吗?

它不会以 “null” 的形式返回,如果我使用 ==

就有意义了

最佳答案

console.log(null) 打印的

null 本身只是一个文字表达式,per MDN description of null . null 不是全局对象的属性,如您上面提到的 value ,而是一个对象。您在上面使用 === 所做的实际上是将对象与值(或属性)进行比较。因此 value 和 null 的类型不同,这导致 if(value === null) 结果为 false。但是,当使用 == 来检查 if(value == null) 时,会在检查之前执行类型转换。所以 valuenull 在检查之前保持相同的类型,允许您比较 valuenull。不过,需要注意的一件事是 == 在检查相等性时非常宽松,很容易出错。

关于javascript - 如果 console.log 为空,为什么 == 工作但 === 不工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41645295/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com