[JavaScript] ===,严格相等运算符和 ==

目录

1. 我想做什么/当前代码

2.环境

3.研究

3-1. ===(严格相等运算符)

3-2. ==(等价运算符)

3-3. 关于null和undefined

3-4. 未定义的例子

4.最终代码

五、总结

6. 参考

7. 最后

1. 我想做什么/当前代码

我想获取 id 并比较它是否在对象中→当它不在时将其添加到对象中。

我的前辈给我的建议是“== 和 === 是不同的”。

function countContents( id ) {
if ( id in Obj == false ) {
//オブジェクト(Obj)にidが含まれないときは追加する
countObj[id] = id;
        }

2.环境

  • windows 10 版本 21H2

3. 调查

3-1.===(严格相等运算符)

比较左右操作数,当它们类型相同且值相同时返回true

* 操作数:指使用操作符的对象。例如,在 A + B 中,A 和 B 是操作数。

console.log(3150 === 3150); // => true
console.log(3150 === "3150"); // => false

对于对象,如果引用者是不同的对象,即使是空对象也会是false

// 例:フルーツのオブジェクトを作成
const objFruit1 = {};
const objFruit2 = {};
// 参照元が異なるのでfalse
console.log(objFruit1 === objFruit2); // => false
// 同じ参照を比較している場合はtrue
console.log(objFruit1 === objFruit1); // => true

3-2.==(等价运算符)

比较相同数据类型的操作数时,结果与=== 相同。

* 比较不同类型的值时进行隐式类型转换。

console.log(3150 == 3150); // => true
console.log(3150 == "3150"); // => これもtrueになる

其他,JPrime描述了以下行为。

// "01"を数値にすると`1`となる
console.log(1 == "01"); // => true
// 真偽値を数値に変換してから比較
console.log(0 == false); // => true
// nullの比較はfalseを返す
console.log(0 == null); // => false
// nullとundefinedの比較は常にtrueを返す
console.log(null == undefined); // => true

通常建议使用厳密等価演算子(===) 以防止意外行为。

如果要比较不同的类型,则应显式匹配类型。

3-3.关于null和undefined

上面说的是console.log(null == undefined);,但不是null=undefined

(同样没有价值。)

物品内容
无效的・没有价值,因为没有价值可以分配。

- 不会自然发生

·文字(※)

不明确的・没有价值,因为没有赋值

・当访问对象中不存在的属性或数组中不存在的元素时,或者在获取没有返回值的函数的返回值时,它变得未定义。

·多变的

*Literal:指在源代码中牢固地写出的字符和数字。 (例如:”太郎” 等)

但是使用等価演算子(==) 将检查未定义和空值,因此它将是true

3-4.未定义的例子

在 JavaScript 中声明变量的关键字有 constletvar

letvar 可以在没有初始值的情况下声明。如果未声明,它将使用默认值undefined 进行初始化。

var x;
// 「trueです」が実行される
if (x === undefined) {
  console.log('trueです');
}
else {
  console.log('falseです');
}

如果const 没有初始值,则会发生错误。

//上記コードのvarをconstにするとエラー
Uncaught SyntaxError: Missing initializer in const declaration (at index.html:65:7)

4.最终代码

这次想写false时要执行的流程,所以改成===(厳密等価演算子)

function countContents( id ) {
if ( id in countObj === false ) {
countObj[id] = id;
        }
}

五、总结

=单一的差异可能会导致隐式类型转换等意外行为,所以我想根据情况适当使用它。

6. 参考

7. 最后

如果您能指出一些事情,我将不胜感激。

感谢您的阅读。

原创声明:本文系作者授权爱码网发表,未经许可,不得转载;

原文地址:https://www.likecs.com/show-308622245.html