1.运算符
1.1算术运算符
二元运算符
运算符 |
描述 |
实例 |
+ |
加 |
10 + 20 = 30 |
- |
减 |
10-20 = -10 |
* |
乘 |
10*20 = 200 |
/ |
除 |
10/20 = 0.5 |
% |
取余数(取模) |
返回除法的余数9%2 = 1 |
不要直接判断两个浮点数是否相等,浮点数的精确度不如整数。
一元运算符
运算符 |
描述 |
实例 |
++ |
自增(也是一元运算符) |
x=++y |
x=y++ |
||
-- |
自减(也是一元运算符) |
x=--y |
x=y-- |
- 当不参加其他运算,只是自身增加和减小时,前置和后置是一样的,一但参与了其他运算(赋值也算运算)两者就会产生不同的效果。
- 后置: a++ 先赋值,再自增(自减)------先人后己
- 前置: ++a 先自增(自减),再赋值。--------先己后人
- 数字是常量没有自增自减,只有变量才有自增自减。
- 开发时,大多使用后置递增/减,并且代码独占一行,例如:num ++;或者num--;
1.2比较运算符(关系运算符)
比较运算符(关系运算符)是比较两个值,比较运算后,会返回布尔值(true / false )作为比较运算的结果。
运算符名称
- 当<两边都是字符串时比较都是ascii码,并且是一位一位的进行比较
- 当<一边是数字,一边是数字字符串时,会默认转数据类型,然后再对两边的数值进行比较,最终返回一个布尔值。
- 在比较时true转换为1,false转换为0;
- NaN不是一个数,但是一个值,与自身都不相等,两个NaN进行比较时,返回false。
- undefined和谁比都是false,但是和null进行比较时返回true。
- null可以通过大于号和小于号来转换数据类型(转换后值为0),但不可以通过等号来转换数据类型
console.log(NaN==NaN);//false console.log(undefined>-1);//false console.log(undefined==null);//true console.log(null>-5);//true console.log(null==0);//false console.log(''==false);//true
1.3赋值运算符
赋值运算符的优先级比较低,不是最低,但低于别的运算符。
1.4逻辑运算符
概念:逻辑运算符是用来进行布尔值运算的运算符,其返回值也是布尔值。后面开发中经常用于多个条件的判断
运算符名称
&&逻辑与:
- 运算符两边,同真则真,有假则假。
- 运算符两边的操作数两边如果有一个是布尔值,结果不一定是布尔,可能是原值 。
- 短路逻辑:运算符的两侧的操作数,如果第一个操作数是假,后面不再执行,直接返回第一个操作数结果。 如果第一个操作数是真,则由第二个操作数来决定结果。
- || 逻辑或 :
- 运算符两边有真则真,同假则假。
- 如果第一个操作数是真,直接返回第一个操作数的结果。 如果第一个操作数是假,由第二个操作数来决定结果
- &&优先级高于||
- 短路逻辑:运算符两侧的操作数,如果第一个操作数是真,后面不再执行,直接返回第一个操作数的结果有,如果第一个操作数是假的话,由后面的操作数来决定结果。
!逻辑非 :就是进行取反操作,如true的相反值是false。
1.5条件运算符
格式: 判断条件? value1;value2 (若判断条件为真则返回value1,否则返回value2)(是一个三元运算符),和If else原理相同。
1.6运算符的优先级
1.7补充
- 一边数字,一边字符串数字 会自动转换数字类型 eg: console.log('5'>15);//false
- 两边都是字符串 比较ascII码,一位一位比较 eg: console.log( '5'>'15');//true
- NaN和谁都不相等,和自身都不相等。
- undefined 除了null和谁都不相等结果都是false