非数值的情况下使用'>''<''>=''<='

298 阅读2分钟

非数值的情况下使用'>''<''>=''<='

对于非数值进行比较时,会先将其转换为数值,然后再进行比较。

// true转换为数值是1 false转换为数值是0
console.log(1 > true); // 结果为false

console.log(1 >= true); // 结果为true

console.log(1 > '0'); // 结果为true

console.log(1 > null); // 结果为true

//任何值和NaN作比较结果都是false
console.log(1 > 'hello'); // 结果为false 任何值和NaN作比较结果都是false

如果符号两侧都是字符串,不会将其转换为数值进行比较,而会分别比较字符串中字符的Unicode编码。 注意:所以在比较两个字符串型的数字时,一定要先转型。

console.log('134545353' > '5'); // 不转型则返回false

console.log('134545353' > +'5');// 这样结果才返回true

而在比较字符编码时,是一位一位进行比较的,如果符号两侧第一位一样,则比较下一位,所以借此可以用来对英文进行排序,而比较中文是没有意义的。

console.log('1' < '5'); // 结果为true
console.log('11' < '5'); // 结果也为true
console.log('be' > 'b'); // 结果为true 先比较第一位b的字符编码是一样的,再比较第二位,由于be有e,而b只有一位,所以be>b
console.log('be' < 'b'); // 结果为false

&& 与(同真才真,有假则假)

可应用于任意数值。如果有一个操作数不是布尔类型,逻辑与就不一定返回boolean类型

1.如果第一个操作数是null,NaN,undefined,false,0,""可被转换为false的值的时候返回该值

console.log(null && 'world'); //null

2.当第一个表达式为真,整个表达式的结果取决于第二个表达式,返回第二个表达式

console.log('hello' && 'world'); //world

3.当第一个表达式为假,整个表达式的结果就可以确定,返回第一个表达式

console.log(false && 'world'); //false

4.[null,NaN,undefined,false,0,""] 直接返回该操作数

console.log('' && 123);  //''  空字符串
console.log(0 && null);  //0
console.log(123 && 345); //345
console.log(123 && undefined); //undefined

||(有真才真,同假则假)

1.如果两个或多个操作数都是null,NaN,undefined,false,0,""可被转换为false的值的时候返回该值。

console.log(null || false); //false

2.如果第一个操作数是null,NaN,undefined,false,0,"" 则返回第二个操作数。

console.log(null || 'hello'); //'hello'

3.如果第一个操作数是真,直接返回第一个操作数。

console.log(123||345);   //123

当第一个表达式为真,整个表达式的结果就可以确定,返回第一个表达式

当第一个表达式为假,整个表达式的结果取决于第二个表达式,返回第二个表达式

有一个为true结果就为true

同时为false结果才为false

!(NOT)

经常被用作条件判断时的取反操作,类型判断等,还可以用'!'将变量转换为Boolean类型

console.log(!null);  //true

console.log(!undefined);  //true

console.log(!''); //true

console.log(!100);  //false

console.log(!'abc');  //false