【发布时间】:2017-05-29 10:56:52
【问题描述】:
一般的javascript问题请。
我有一个按钮,可以标记用户是否想将帖子分享到 Facebook。单击时,它将检查用户是否已经拥有 facebook 令牌。还有,token是否有效。
如果其中一个不正确,它将提示用户登录 facebook。
现在代码运行良好。但是很长一段时间我都在做 if(facebookToken === 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?
这似乎是不可能的。这里发生了什么?
如果value 控制台记录到null 而我记录到if(value === null) 为什么不等于true?
如果是控制台日志null,那肯定是它?
它不会以"null" 的形式返回,如果我使用的是==,这将是有意义的
【问题讨论】:
-
你确定是
null? IIRC,比较value == null时给出true的唯一值是null和undefined。 -
yup 100% 数据库中它的记录为零,因此它是控制台日志
null -
null === undefined // false null == undefined // true
-
请
console.log(typeof facebookToken, facebookToken, !!facebookToken, facebookToken === null, facebookToken == null, facebookToken === void 0, facebookToken == void 0)并在此处发布结果。 -
@bloppit 控制台似乎显示未定义为空。试试
console.log(undefined)。这是在网络浏览器上吗?尝试另一个。
标签: javascript if-statement null undefined