二、JS运算符、NaN

一、关系运算符  (< <= > >= == === != !==)

判断符号左右的两个数据的大小之间的关系,运算结果是一个布尔类型的值

==   只判断值

===即判断值并且判断数据类型

!=   只判断值    只要值不相等,就返回true

!==   判断值和数据类型,值或数据类型不相等,运算结果就为true ,值和数据类型都一样,运算结果为false

布尔值和数字做比较时,true转化成了1,false转化成了0

二、逻辑运算符(&& ||  !)

判断符号左右两端条件的逻辑关系

一般情况下,逻辑运算符都是在做布尔数据类型的逻辑运算(结合关系运算符)

逻辑运算符的值一般也为一个布尔类型的值

三、短路

&&:一遇到false,之后的运算停止,运算结果直接为false

||:一遇到true,之后的运算停止,运算结果直接为true

四、优先级

赋值运算符<逻辑运算符<关系运算符<算数运算符

五、逻辑运算符两边不是布尔类型的数据

运算时会将其它数据类型的值先转为布尔值,再进行运算

数值的0、-0,特殊值的null、undefined、NaN以及空墨盒字符串会转为false,其它的值则会被转为true

 11 && 3---------true && true -------3  (比较时都转为了true,返回结果时由于&&左右两边的数据类型都不是布尔值,于是返回了判断时最后一个为true的值)

 0 && 3 ----------false && true------0  (比较时左边0转化为了false,短路,直接返回false,由于左边的值不是布尔值,于是返回了0)

 11 || 3-------------11 (||运算一遇到true就短路)

 33 && 0 && 10----------0

 0 || 0 || 20 ----------------20

 33 && 5 || 7------------------5

 3 && 0 || 6

六、JS是弱类型语言

1、数据类型可以转化

2、变量在赋值时才确定数据类型

七、复合运算符+= -= *= /= %=
八、赋值运算符 =
九、算术运算符 + - * / %
十、三目运算符(所有的if else语句都可以转为三目运算符)
条件 ? 结果1 : 结果2  
判断条件1的布尔值。布尔值为true则返回结果1,布尔值为false则返回结果2
 
JS弱语言的转义

1、JS是一门弱类型的语言,在做加运算时"+"左右两边必须都是Number类型的数据,只要有一边是字符串,就做的时字符串的拼接。

2、通过JS代码获取到的页面中的输入域(textareainput)的value值,是一个字符串类型的数据,无论输入的是什么

3、JS中除了"+"运算符,其余的运算符(- * / %)运算时,如果符号两端是字符串,会先将字符串转为Number类型,再做数学运算

4、如果一个字符串中含有除数字外的英文字母,做运算转化为Number类型时,字母无法转为数字,最终会得到NaN

5、NaN和“+”做运算,是字符串的拼接,NaN和其余的算术运算符(- * / %)做运算,得到的都是NaN

NaN+"11"  //   "NaN11"

NaN-11     //   NaN

6、NaN 和任何数据做关系运算,得到的都是false

NaN>0   // false

 

"abcd"-12             //  NaN

"abcd1234"-12     //NaN

原文地址:https://www.cnblogs.com/liankong/p/10555808.html