/** * 相等运算符 '==',相等则返回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
来源:https://www.cnblogs.com/goujian/p/11803468.html