一般的なjavascriptでお願いします。console.logがnullの場合、==は動作しますが、===ではないのはなぜですか?
私はユーザーがFacebookへの投稿を共有したいかどうかを示すフラグがあります。クリックすると、ユーザーがすでにFacebookブックトークンを持っているかどうかがチェックされます。また、トークンが有効かどうか。
いずれかが真でない場合は、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 });
}
}
きっと===
直接比較を、私は値logginコンソールだとバックnull
を取得した場合:私は、コンソールにログインし、それがこの作品私のコードではnull
として戻ってきましたよ確かにif(value === null)
は本当と同じでなければなりませんか?
これは不可能なようです。ここで何が起こっていますか?
value
場合は、コンソールnull
にログとtrue
に一致しないこと、なぜ私はif(value === null)
していますか?
確かに、コンソールログの場合null
それはそれでなければならないのですか?
私がconsole.log(null)
によって印刷さ==
「ヌル」でしたか? IIRCの場合、 'value == null'を比較するときの唯一の値は' true'に 'null'と' undefined'です。 – Rafael
yup 100%データベース内にゼロレコードがあり、コンソールログに 'null 'があります – bloppit
null ===未定義// false null ==未定義// true –