JavaScript比较运算符(js比较对象)

boyanx1个月前技术教程9

JavaScript 语言中有两种比较方式,转换类型比较运算符 == 和严格比较运算符 ===。其中严格比较运算符仅当两个操作数的类型相同且值相等时才为true。而转换类型比较运算符== 会在进行比较之前,将两个操作数转换成相同的类型,再来比较。

比较运算符常用语逻辑语句中,它主要是用语判定变量或者值是否相等。

相等运算符

相等运算符 == 会为两个不同类型的操作数转换类型,然后进行严格比较。

示例:

console.log(1 == 1);    // true
console.log(1 == 2);    // false
console.log(1 == true); // true
console.log(1 == '1');  // true

从上述代码中的1 == '1',输出结果为 true,就可以看出 == 相等运算符,在对两个操作数进行比较之前,会将两个操作数转换成相同的类型。

当使用比较运算符时,如果其中有布尔类型的操作数,值为 true时会转换为1,值为false时会转换为0。

当两个操作数都是对象时,JavaScript会比较其内部引用,当且仅当他们的引用指向内存中的相同对象时才相等,即他们在栈内存中的引用地址相同。

严格相等运算符

严格相等运算符 === 不会对操作数进行类型转换,只有当值相等并且类型也是相等时才会返回 true。

示例:

console.log(1 === 1);     // true
console.log(1 === 2);     // false
console.log(1 === true);  // false
console.log(1 === false); // false
console.log(1 === '1');   // false

从a === c d的比较结果可以看出,不同类型的值进行比较时,会返回 false。

不等运算符

不等运算符 != 只有当操作数不相等时才返回true,如果两操作数不是同一类型,会将操作数转为同意类型再进行比较。

示例:

var a = 1;
var b = 2;
var c = '1';

console.log(a != 1);  // false
console.log(a != b);  // true
console.log(a != c);  // false

如果两操作数为对象类型,JavaScript会比较其内部引用地址,仅当他们在内存中引用不同对象时不相等。

严格不等运算符

严格不等运算符 !== 当操作数不相等或不同类型时返回 true。

示例:

var a = 1;
var b = 2;
var c = '1';

console.log(a !== 1);  // false
console.log(a !== b);  // true
console.log(a !== c);  // true

大于运算符

大于运算符 > ,只有当左操作数大于右操作数时才返回 true。

示例:

console.log(5 > 1);   // true
console.log(5 > 10);  // false
console.log(5 > '5'); // false

大于等于运算符

大于等于运算符 >= ,只有当左操作数大于或者等于右操作数时才返回 true。

示例:

console.log(5 >= 1);   // true
console.log(5 >= 5);   // true
console.log(5 >= 10);  // false
console.log(5 >= '5'); // true

小于运算符

小于运算符 < ,只有当左操作数小于右操作数时才返回 true。

示例:

console.log(5 < 1);   // false
console.log(5 < 5);   // false
console.log(5 < 10);  // true
console.log(5 < '5'); // false

小于等于运算符

小于运算符 < ,只有当左操作数小于或者等于右操作数时才返回 true。

示例:

console.log(5 <= 1);   // false
console.log(5 <= 5);   // true
console.log(5 <= 10);  // true
console.log(5 <= '5'); // true

使用比较运算时的类型转换

当比较运算涉及类型转换时,JavaScript 会按以下规则对字符串、数字、布尔、对象等类型的操作数进行操作:

  • 当操作数有数字类型和字符串类型时,会将字符串转为数字值。
  • 当其中一个操作数为布尔型,布尔值为true则转换为1,为false则转换为0。
  • 如果一个对象与数字或字符串相比较,JavaScript 会尝试返回对象的默认值。操作符会尝试通过valueOf 和 toString 方法将对象转换为其原始值。如果尝试转换失败,会产生一个运行时错误。

动手小练习

  1. 请分别用比较运算符和严格比较运算符,来比较10 和 '10'的值是否相等。
  2. 请说出下列代码的输出结果:
console.log(1 <= 3); 
console.log(true != 5);   
console.log('1' >= false);  
console.log(2 === '5');
console.log(5 == '5');
标签: 字符对比

相关文章

Go 字符串四种拼接方式的性能对比

简介使用完整的基准测试代码文件,可以直接运行来比较四种字符串拼接方法的性能。for 索引 += 的方式for range += 的方式strings.Join 的方式strings.Builder 的...

Java KMP算法:让字符串匹配不再烦恼

前言在编程的世界里,字符串匹配就像一场“表面简单,内里复杂”的戏码。表面上,两个字符串的比较似乎跟找朋友的名字一样容易;可当数据量爆炸时,那些原本看似轻松的算法瞬间变得如同用手撕牛皮纸,令人崩溃。别担...

哪种编程语言又快又省电?有人对比了27种语言

编辑:小舟、张倩在手机快没电时,管理软件往往会提醒我们关掉某些耗电量高的应用。可见,除了硬件厂商外,软件厂商也应该重视能耗问题。在这篇文章中,研究者分析了一下各种编程语言的能耗对比。当能耗也成为了一个...

C#拼接字符串及简单性能比较(c#两个字符串相连接)

在C#编程中拼接字符串应该是最常见的场景之一,假如现在有几个变量需要转换成字符串并按格式拼接,常用的几种方法:int a = 1; char b = 'c'; double c = 1...

有很多人问我,怎么来对比这个单元格是否包含某个字符

有很多人问我,怎么来对比这个单元格是否包含某个字符。今天就把这个函数分享出来,希望能帮助你们更好、更快的办公。函数公式如下:=IF(ISNUMBER(SEARCH("K", A2)),...

批量分析文本中字符出现的次数并统计

批量分析文本中字符出现的次数并统计在数据统计及分析数据过程中经常会遇到,对于这个问题的解题思路也很明确,先拆分统计,再去重按条件整合。所以公式为=FILTER(UNIQUE(REGEXP(CONCAT...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。