在JavaScript中,我们常常想比较两个值,并根据结果做一些处理。
这次,我将解释用于检查值之间关系的比较运算符。
比较运算符
比较运算符是比较其操作数的值并返回真或假的运算符。
操作数 比较运算符 操作数
可以使用以下类型的比较运算符。
种类 | 运算符 | 说明 |
---|---|---|
大于 | > | 左边的操作数大于右边的操作数返回 true |
大于等于 | >= | 左边的操作数大于或等于右边的操作数返回 true |
小于 | < | 左边的操作数小于右边的操作数返回 true |
小于等于 | <= | 左边的操作数小于或等于右边的操作数返回 true |
严格全等 | === | 两边操作数相等且类型相同时返回 true。 |
严格不等式 | !== | 两边操作数不相等或类型不同时返回 true。 |
等于 | == | 如果两边操作数相等时返回 true。 |
不等于 | != | 如果两边操作数不相等时返回 true |
>>=<<=比较值的大小。此类比较运算符有时称为关系运算符。
另外 ===!====!=比较值,看它们是否彼此相等。此类比较运算符有时称为相等运算符。
使用比较运算符
让我们看看如何使用比较运算符以及可以获得什么。
大于运算符 (>)
如果前面的操作数大于后面的操作数,则大于运算符返回 true,否则返回 false。
console.log(10 > 5); // true console.log(10 > 10); // false
大于等于运算符 (>=)
如果前面的操作数大于或等于后面的操作数,则大于或等于运算符返回 true,否则返回 false。
console.log(10 >= 5); // true console.log(10 >= 10); // true console.log(5 >= 10); // false
在习惯之前,您可能想知道是先写大于号还是先写等号。
作为大于等于运算符的名称,让我们按照>→=的顺序记住。
小于运算符 (<)
如果前面的操作数小于后面的操作数,则小于运算符返回 true,否则返回 false。
console.log(5 < 10); // true console.log(10 < 10); // false
小于等于运算符 (<=)
如果前面的操作数小于或等于后面的操作数,则小于或等于运算符返回 true,否则返回 false。
console.log(5 <= 10); // true console.log(10 <= 10); // true console.log(10 <= 5); // false
小于等于运算符也和大于等于运算符一样,以<→=的顺序来记述。
严格相等运算符 (===)
严格相等运算符使用三重等于===来比较前后操作数。
如果它们是相同的值和相同的类型,则返回 true,否则返回 false。
console.log(5 === 5); // true console.log(5 === '5'); // false
它的特点是不仅要找到相同的值,而且要与条件属于同一类型。
此外,如果两个操作数都是对象,则在两个操作数引用同一对象时返回 true。
如果引用的对象不同,则为假。
const obj1 = {}; const obj2 = {}; // 比较相同的参照 console.log(obj1 === obj1); // true // 比较不同的参照 console.log(obj1 === obj2); // false
严格的不等式运算符 (!==)
严格不等运算符在使用!双等号==之前和之后比较两个操作数。
如果它们是不同的值或不同的类型,则返回 true,否则返回 false。
console.log(5 !== 5); // false console.log(5 !== '5'); // true
严格不等运算符产生与严格相等运算符相反的结果。
相等运算符 (==)
相等运算符使用双等于==来比较两个操作数,如果相等则返回 true,否则返回 false。
当比较相同数据类型的值时,结果与严格相等运算符相同。
console.log(5 == 5); // true console.log('hello' == 'hello'); // true console.log('hello' == 'hi'); // false
相等运算符测试值相等性,但不测试数据类型相等性。
下面比较数字 5 和字符串 '5',它们被认为彼此相等。
console.log(5 == '5'); // true
如果操作数在内部属于不同类型,则在比较之前将它们隐式转换为相同类型。
下面是比较不同类型的值时的例子。
让我们看看类型是如何转换的。
// 字符串被转换成数值 console.log(5 == '5'); // true // ‘01’被转换成‘1’ console.log(1 == '01'); // true // true被转换为1 console.log(1 == true); // true console.log(1 == false); // false // false被转换为0 console.log(0 == true); // false console.log(0 == false); // true // 比较null和undefined返回true console.log(null == undefined); // true console.log(null == 0); // false console.log(null == 1); // false
这样一来,就要注意结果一见不可知的行为。
因此,建议使用严格相等运算符而不是严格相等运算符,如果要比较不同的类型,先比较类型。
不等于运算符 (!=)
不等运算符使用!和等于=来比较前后两个操作数,如果不同则返回真,否则返回假。
console.log(5 != 5); // false console.log('hello' != 'hello'); // false console.log('hello' != 'hi'); // true
与相等运算符一样,不等运算符在比较不同类型的操作数时隐式地进行类型转换。
console.log(5 != '5'); // false console.log(1 != '01'); // false console.log(1 != true); // false console.log(0 != true); // true console.log(null != 0); // true
同样,建议尽可能避免使用不等运算符,而是使用不执行类型转换的严格不等运算符。
结语
现在,我们来谈谈比较运算符。
//重点
-
比较运算符是比较两个值并返回真假值的运算符
-
“>”“>=”“<”“<=”比较值的大小
-
“===”“!==”“==”“!=”比较值是否相等
*等于(不等于)运算符比较不同类型的值时,会隐式转换为相同类型
比较运算符包含在各种语句中,例如 if 和 for 语句。