运算符:操作符
主要诗羡赋值、算数运算等功能
typeof 也是运算符
非数值型的字符串就会是NaN
+ - * / %
' + ' 加法运算符
只要是跟字符串相加的都会转成字符串,(相互拼接)
数字跟NaN想加的都是 NaN ,字符串跟 NaN 想加就是拼接
script>
console.log(1 + 1);//2
console.log(1 + '1');//11
console.log(1 + true);//2
console.log('1' + true);//1true
console.log(1 + 'true');//1true
console.log(1 + NaN);//NaN
console.log('1' + NaN);//1NaN
script>
减法运算
减法运算符 会把字符串中的数字转化为数值型
非数值型的字符串就会是NaN
console.log(1 - 1);//0
console.log(1 - '1');//0
console.log(1 - true);//0
console.log('1' - true);//0
console.log(1 - 'true');//NaN
console.log(1 - NaN);//NaN
console.log('1' - NaN);//NaN
乘法运算
乘法运算也会把字符串的数字转化为数值型
数值乘非数字型的字符串返回的是 NaN
console.log(1 * 1);//1
console.log(1 * '1');//1
console.log(1 * true);//1
console.log('1' * true);//1
console.log(1 * 'true');//NaN
console.log(1 * NaN);//NaN
console.log('1' * NaN);//NaN
除法运算
取余运算
console.log(5 % 3);//2
console.log(7 % 6);//1
浮点数
浮点数 小数
浮点数精确度 浮点数最高精确度17位小数,
在算数运算中小数浮点数之间的运算精确度没有整数高
表达式
由数字、运算符、变量组成的式子1
递增运算符:反复给数字变量增加相同的值,例如增加1
前置递增 简写 ++变量名 先自加1在进行运算
++num 等价于
后置递增 变量名++ 先运算再自加
num++ 等价于 num=num +1
前置递增和后置递增单独写时效果一样
递减运算符
分为前置递减(--num) 后置递减(num--)
前置和后置都是立马给变量减1
前置递减(--num )是递减后的新值
后置递减(num--)是原来的值
var num = 10
console.log(num-- + --num);//18
比较运算符
两个值之前的比较所使用的运算符,会返回一个布尔值(true/false)
逻辑运算符:
就是用来进行布尔值运算额运算符,返回值也是布尔值,开发中常用
逻辑与 && 其实就是and 符
特点 两边必须都是true才会返回 true 否则返回 false
逻辑 或 ||
特点 两边只要有一个true 就会返回 true ,两边都是 false 才会返回 false
逻辑 非 ! not
特点: 也叫取反,用来取一个布尔值的相反值 例如 true 的相反值是 false
== 相等运算符
底层逻辑:把两个数据类型自动转换成同一种数据类型
console.log(undefined==null);//true
其实undefined就是 null 衍生过来的
=== 必须值和数据类型一致的情况下才会返回 true 不会进行数据类型的转换
!= 不等于 两个值会自动转换成同一种值,
!== 完全不相等 不会进行数据类型的转换
一元运算符
一个值的运算
+ -
短路运算
当有多个表达式时左边的表达式的值可以确定结果时,就不在继续运算,右边的表达式的值
逻辑与 &&
语法:表达式1&&表达式2
特点;如果第一个表达式的值为真时,就返回第二个表达式
如果第一个表达式为假时,就会返回第一个表达式
数字里 0 代表假 除0以外都是真
逻辑或 ||
语法:表达式1 || 表达式2
特点:如果第一个表达式为真时就返回第一个表达式,
如果第一个表达式为假时,就会返回第二个表达式
赋值运算符
加法运算符
age +=1 等价于 age= age +1
减法运算符
age - = 1 等价于 age = age -1
除法运算符
age /=2 等价于 age = age / 2
乘法运算符
age *= 2 等价于 age = age*2
取余运算符
age %=2 等价于 age = age%2
运算符优先级
js和数学中一样,运算符也具有优先级
数学中的运算符 加减乘除
逻辑 && 和 || 层级一样,优先级一样,想要改变计算结果,需要加括号()
逻辑&& 的优先级更高一点 需要加括号
从左到右计算
三元表达式
三个表达式 语法:表达式1 ? 表达式2 : 表达式3
如果表达式1 为真 会返回表达式2
如果表达式1 为假 会返回表达式3
三元表达式的场景
列表里需要展示类似于已支付未支付等这些字眼时,后端返回的是 0 1 2等数字时,需要三元表达式判断然后转化为文字展示在页面上
input 框的内容,不是必须输入的input 框(也可以输入内容)传给后端值时,值为空,需要给一个默认值时,就需要用到三元表达式,如果用户 填了内容,那就传给后端用户填的内容,如果没填,就给一个默认值
if分支语句
{ }可以实现一段代码块
if语句做判断 语法 if(表达式) 只有表达式里为真的时候 才会进行下去
if 如果后面只有一段代码时,后面{ }可以不写,但不规范,如果没有{ },那它只对紧挨着它的代码有效果
if (条件) { }else { }
var num = 100; if (num <= 100 && num >= 80) { console.log('牛逼'); } else if (num < 80 && num >= 60) { console.log('还不错'); } else { console.log('不太行'); }
switch 语句
分支语句
特点:
switch (表达式) { case value: //表达式 匹配成功是执行的 case value2: //表达式 匹配成功是执行的 case value3: //表达式 匹配成功是执行的 break; default: break; }
如果没有break 时,匹配成功的表达式会执行,也会执行下面全部的表达式
break 就是终止执行,跳出 switch 语句
场景:在固定的数值使用判断,匹配相同的选项,进行执行,
default: 兜底 没有匹配的选项时执行。