js中的相等运算符用法

我怕爱的太早我们不能终老 提交于 2019-12-03 16:55:06
/**
 * 相等运算符 '==',相等则返回true,不等则返回false
 * - 用 '==' 来比较两个值时,若值的类型不同,则会自动进行类型
 *   转换,将其转换为相同的类型然后再进行比较。
 */
// 类型相同都是数字类型,直接比较
console.log(`1 == 1 为 ${1 == 1}`); // 1 == 1 为 true
// 类型不同,一个数字,一个字符串,会自动的将字符串 '1'
// 转换成数字为 1,再进行比较
console.log(`1 == '1' 为 ${1 == '1'}`); // 1 == '1' 为 true
// 字符串与布尔型进行比较,会先将左边的true转换成数字为 1,然后将右边
// 的字符串 '1' 转换成数字为 1,显然是相等的
console.log(`true == '1' 为 ${true == '1'}`); // true == '1' 为 true
// 类型不同,这种情况比较特殊,没有把 null 转换成数字进行比较
console.log(`null == 0 为 ${null == 0}`); // null == 0 为 false
// undefined 衍生自 null,两者做相等比较时是 true
console.log(`undefined == null 为 ${undefined == null}`); // undefined == null 为 true
// NaN 不和任何值相等,包括其本身
console.log(`1 == NaN 为 ${1 == NaN}`); // 1 == NaN 为 false
// NaN 与其自身比较为 false
console.log(`NaN == NaN 为 ${NaN == NaN}`); // NaN == NaN 为 false

// 可以用 isNaN() 函数来判断一个值是否是 NaN,是则返回true,
// 否则返回false。
var n1 = NaN;
console.log(`isNaN(n1) = ${isNaN(n1)}`); // isNaN(n1) = true

/**
 * 不等运算符 '!=',不相等则返回true,相等则返回false
 * - 用 '!=' 来比较两个值时,若值的类型不同,则会自动进行类型
 *   转换,将其转换为相同的类型然后再进行比较。
 */
// 1与'1'比较
console.log(`1 != '1' 为 ${1 != '1'}`); // 1 != '1' 为 false

/**
 * 全等运算符 '==='
 * - 用来判断两个值是否全等,和相等类似,不同的是它不会做自动的类型转换
 *   如果两个值的类型或者值不同,直接返回false,如果两个值的类型和值都相同,则
 *   返回true。
 *
 * 不全等运算符 '!=='
 * - 用来判断两个值是否不全等,和不等类似,不同的是它不会做自动的类型转换
 *   如果两个值的类型或者值不同,直接返回true,如果两个值的类型和值都相同,则
 *   返回false。
 */
// 值相等,但类型不同
console.log(`null === undefined 为 ${null === undefined}`); // null === undefined 为 false
// 值相等,但类型不同
console.log(`1 !== '1' 为 ${1 !== '1'}`); // 1 !== '1' 为 true

/**
 * 条件运算符也叫三元运算符
 * - 语法:
 *      条件表达式 ? 语句1 : 语句2;
 * - 执行流程:
 *      条件运算符在执行时,首先对条件表达式进行求值,
 *      如果该值为true,则执行语句1,并返回执行结果
 *      如果该值为false,则执行语句2,并返回执行结果
 *      如果条件表达式的求值结果是一个非布尔值,则会
 *      将其转换为布尔值然后再运算
 */
// 布尔值
console.log(`1 > 2 ? true : false 结果为 ${1 > 2 ? true : false}`); // 1 > 2 ? true : false 结果为 false
// 非布尔值
console.log(`'hi' ? true : false 结果为 ${'hi' ? true : false}`); // 'hi' ? true : false 结果为 true
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!