一、运算符的概念
运算符也叫操作符,通过运算符可以对一个值或者多个值进行运算,并获取运算结果,常用于实现赋值、比较、执行算术运算等功能。
二、算术运算符(+、-、*、/、%)
(一)注意事项
1、当对非Number类型数据进行运算时,会将这些值转换为Number类型,再进行运算
2、任何值和NaN做运算,都是NaN
3、如果对两个字符串进行加法运算,则会做拼串,将两个字符串拼接为一个字符串,并返回
4、任何值和字符串做加法运算,都会先转换为字符串,再和字符串做拼接的操作
console.log('123' – 1); //122
console.log(true + 1); //2
console.log(null + 1); //1
console.log(undefined + 1); //NaN
console.log(NaN + 1); //NaN
console.log('123' + 'abc'); //123abc
console.log(1 + 2 +'3'); //33
console.log('1' + 2 + 3); //123
(二)表达式和返回值
表达式是由常量或变量及运算符组成的式子,最终会有一个结果返回给我们,称之为返回值。
例如:let b = a + 1;是表达式,b是返回值。
注意:赋值语句不是表达式,例如:let a = 1;是赋值语句,不是表达式。
三、一元运算符(只需要一个运算符)(+、-)
注意事项:
正号:正号不会对数字产生任何影响
对一个其他的数据类型使用正号,会将其转换为number
负号:负号可以对数字进行取反
对非number类型的值,会现将其转换为number,再进行运算
console.log(1 + +true); //2
console.log(1 + +"2" + 3); //6
四、递增和递减运算符(++、–)
(一)概念
反复给数字变量添加或减去1,可以用递增(++)和递减(–)运算符完成。
(二)种类
放在变量前面时,称前置递增(递减)运算符;
放在变量后面时,称后置递增(递减)运算符。
(三)注意事项
1、递增和递减运算符都必须和变量配合使用
2、无论是前置还是后置递增(递减)运算符,原变量的值都会自增(自减)1
3、区别:a++的值等于原变量的值(自增前的值),先返回原值,再自加
++a的值等于新值(自增后的值),先自加,再返回新值
let c = 3;
console.log(c++); //3
console.log(++c); //5
console.log(c); //5
let c = 3;
console.log(c–); //3
console.log(–c); //1
console.log(c); //1
五、逻辑运算符(!、&&、||)
逻辑运算符是用来进行布尔值运算的运算符,其返回值也是布尔值,后面开发多用于多个条件的判断。
短路运算原理:当有多个表达式时,如果左边表达式已经可以确定结果,那么就不需要运算右边的表达式,一定程度上,可以提高代码的效率。
(一)! ‘逻辑非’运算
注意事项:
1、非运算就是对一个布尔值进行取反操作
2、对一个值进行两次取反,不会变化
3、对非布尔值进行运算,会现将其转换为布尔值,再取反
4、对一个任意数据类型取反两次,可以将其数据类型转换为布尔值,原理和boolean()函数一样
let flag = !!1;
console.log(flag); //true
案例:判断用户输入的是否是数字?
//检测一个值是否为NaN,用isNaN方法
//如果对一个非number类型的值进行isNaN判断,会先将这个值转换为number,再进行判断
let val = 'true'; //用户输入
let res = isNaN(val); //检测输入是不是NaN
console.log(res);
if(!res){
console.log('用户输入的是数字');
}
(二)&& ‘逻辑与’运算
1、运算规则(找false)
只要两个值中有一个为false,就返回false
2、注意事项
&& 具有逻辑中断功能,如果第一个值为false,就不用运算第二个值了
console.log(12 && 5); //5
console.log(1 && 0); //0
console.log(undefined && 0); //undefined 逻辑中断
console.log(null && 0); //null 逻辑中断
console.log('hi' && 0); //0
console.log("" && alert("hi")); //"" 逻辑中断
(三)|| ‘逻辑或’运算
1、运算规则(找true)
只要两个值中有一个为true,就返回true
2、注意事项
|| 具有逻辑中断功能,如果第一个值为true,就不用运算第二个值了
console.log('' || undefined); //undefined
console.log(true || undefined); //true 逻辑中断
console.log(1 || 2); //1 逻辑中断
console.log(-1 || NaN); //-1 逻辑中断
console.log(NaN || 2); //2
(四)案例
var num = 7;
var str = "我爱你~中国~";
console.log(num > 5 && str.length >= num); //true
console.log(num < 5 && str.length >= num); //false 逻辑中断
console.log(!(num < 10)); //false
console.log(!(num < 10 || str.length == num)); //false
var num = 0;
console.log(123 || num++); //123
console.log(num); //0 逻辑中断
var num = 0;
console.log(123 && num++); //0
console.log(num); //1


