Javascript# 系列文章目录--运算符
算数运算符
当对非number的值运算会当成number运算
任何值和NaN运算都是NaN
+加法
- 如果对字符串加法等于拼串
- 故任意数据类型+一个“” 变成字符串
var c = 123;
c = c + ""
//c就会变成String
result = 1 + 2 + "3";
result = "1 " + 2 + 3;
//上面两个运算前后的区别,导致结果不同
-减法
- 可以对两个值做减法,并将结果返回
*乘法
/除法
除了加法的情况,其他都会把其他类型转换成number
d = d - 0;
/*可以利用以上特点,做一个隐式的类型转换
可以通过-0 *1 /1的方式转换为number
%取模 求余数
一元运算符
只需要一个操作数
“+”正号 不会对数字产生任何影响
”- “ 负号 可以对数字符号取反,同数学
对非number的类型的值
它会转换为number再运算
故可以使用+ 将其转换为number
var = 1 + "2" + 3;
var2 = 1 + +"2" + 3;
//上一个是字符串相加
//后一种时数值运算
自增和自减
自增++
*通过自增可使变量自身的基础上增加1
*一个变量自增后,原变量的值会自增1
*自增的两种情况:a++ ++a 两种都会使原变量自增1
a++的值等于原变量的值
++a的值等于新的值
自减–
*通过自增可使变量自身的基础上减1
*一个变量自减后,原变量的值会自减1
*自增的两种情况:a-- --a 两种都会使原变量自减1
a–的值等于原变量的值
–a的值等于新的值
var n1 = 10, n2 = 20;
var n = n1++;
console.log('n='+n);
console.log('n1='+n1)
//n1的值已自增成11
n = ++n1;
console.log('n='+n);
console.log('n1='+n1);
//n1 n都变成12
//自减
n = n2--;
console.log('n='+n);
console.log('n2='+n2);
//n2 = 19
n = --n2;
console.log('n='+n);
console.log('n2='+n2);
逻辑运算符
有三种:非 与 或
在进行逻辑操作时如果操作数不是布尔类型则会将其转换
布尔类型在进行计算。
非使用符号 ! 表示,与使用 && 表示,或使用 || 表示
非 ! 表示
!非运算符可以应用于任意值,无论值是什么类型,这个运
算符都会返回一个布尔值。
非运算符会对原值取反,比如原值是true使用非运算符会
返回false,原值为false使用非运算符会返回true。
如果对一个数值两次取反,它不会有变化
故可以这个方法将任意数据转为布尔值,同Boolean()函数一样
var a = "time"
b = !!a;
与 &&
• 与运算符可以应用于任何数据类型,且不一定返回布尔
值。
• 对于非布尔值运算,会先将非布尔值转换为布尔值。
• 对布尔值做运算时,如果两个值都为true则返回true,
否则返回false。
• 非布尔值时:如果两个都为true,则返回第二个值,如
果两个值中有false则返回靠前的false的值。
或 ||
• 或运算符可以应用于任何数据类型,且不一定返回布尔值。
• 对于非布尔值运算,会先将非布尔值转换为布尔值。
• 对布尔值进行运算时,如果两个值都为false则返回false,
否则返回true。
• 非布尔值时:如果两个都为false ,则返回第二个值,否
则返回靠前true的值
非布尔值的与或运算
与
会转化为布尔值再运算,再返回原值
如果两个值都为true,返回后面的值
如果有false 返回靠前的false的值
或
如果第一个为true,返回第一个值
如果第一个false,直接返回后面的值
赋值运算符
+= a+=5等于a = a + 5
-= a-=5等于a = a - 5
= a=5等于a = a * 5
/= a/=5等于a = a / 5
关系运算符
> < >= <=
非数值情况
- 会将其转换为数字 然后比较
- 任何值和NaN比较都是false
- 比较字符串时,比的时字符串编码大小,而且时一位一位进行比较,以此类推
用于英文排序 - 比较字符串时转型成字符串(+”a“)
Unicode编码表
具体可差编码对应的表
Javascript 中\u编码来转义编码
网页中用&#编码,需要10进制
相等运算符、不相等运算符
相等运算符
比较两个值是否相等 ==
当使用== 比较时,类型不同会自动转换一致
console.log("1" = 1); //true
null 和undefined判断相等会返回true
NaN不和任何值相等,包括它本身
console.log(NaN == NaN)// flase
//判断NaN 是会返回true
console.log(isNaN(a))
不相等运算符
也会进行 类型不同会自动转换
全等运算符
===不做类型转换
不全等运算符
!== 也不做类型转换
条件运算符(三元)
语法:
条件表达式?语句1:语句2:
var a = 44, b = 90, c = 77;
var max = a > b ? a:b;
max = max > c ? max: c;
// 不利维护var max = a > b ?(a > c ? a : c):(b > c ? b : c)
console.log(max)
运算符的优先级
查表,用()查询等级高低
乘法、除法、余数运算优先级高于加法和减法
总结:运算符的运用