运算符
1.typeof:获取一个值的类型并以字符串的形式返回 result = typeof a;
2.加减乘除:
*当对非Number类型的值进行运算时,会自动转化为Number类型然后运算:true--1 false--0 null--0
*任何值和NaN运算都得NaN
2.1 加号:
特殊情况:字符串的相加为拼接,将两个字符串拼接
1.写一些比较长的字符串,可以用+拼串,避免显示不全
2.任何值和字符串做+运算都会先转换为字符串,然后和字符串拼接
3.可以利用2将任何数据类型转为String类型
2.2 减乘除:
任何非Number值做-*/类运算时都会自动转化为Number类型
可以通过为一个值减乘除将其转化为Number类型
一元运算符
需要一个操作数(typeof、+a、-a)
1.加号:正号不对数字产生任何影响 a = +a;
2.减号:负号对数字进行负号取反 a = -a;
可以用+-号对非Number类型的值转化为Number类型 a = 1 + +"2";
3.自增:a++;
对一个变量自增时,原变量的值立刻+1
后++(a++)前++(++a):
a++和++a都会使原变量值立即+1
a++输出为a自增前的值,++a输出为a自增后的值
4.自减:a--;
同上规则
逻辑运算符
!:非运算
对于布尔类型值,两次取反不会改变值
对非布尔值取反时,先转换为布尔类型再取反
可以利用该特点将非布尔类型值转为布尔类型值
可以对一个非布尔类型类型取两次反,将其转化为正确的布尔值
&&:与运算
JS中的与属于短路与:
如果第一个值为false,则不再继续检查第二个数,直接返回false
如果第一个值为true,才继续检查第二个数
||:或运算
JS中的或属于短路或:
如果第一个值为true,则不再继续检查第二个数,直接返回true
如果第一个值为false,才继续检查第二个数
对于非布尔值的&&、||运算情况:先转化为布尔值,再运算,然后返回原值
(如何转换:https://blog.youkuaiyun.com/Marshallren/article/details/104045456)
&&:
如果两个值转化为布尔值后都为true,则返回第二个的原值
如果有一个值是false,则返回第一个值
||:
如果有一个值是true,则返回第一个值
如果第一个值为false,则直接返回第二个值
赋值运算符
=:将右侧值赋值给坐标
+=:a +=5; 等价于a = a + 5;
+=是一个符号,中间不可以打空格
其他运算符依旧适用
关系运算符
比较两个值之间的大小关系
关系成立返回true,否则返回false
var result = 5 > 4;
//返回true
alert(result);
Unicode编码
使用转义字符\输出Unicode编码 \u四位编码
*十进制与十六进制:
在JS中:\u四位编码(十六进制)
在Html中:&#四位编码(十进制)
相等/不等运算符
==:相等返回true,不等返回false
当使用==比较时,如果两个值的类型不同,会自动转化成相同类型转化然后比较
所以1=="1",true=="1"
undefined衍生自null,所以undefined == null
*NaN不和任何值相等,包括它本身
可以通过isNaN()函数判断一个值是否是NaN isNaN(a);
!=:不等返回true,相等返回false
当使用==比较时,如果两个值的类型不同,会自动转化成相同类型转化然后比较
===:判断两个值是否全等,不会自动做类型转化
!==:判断两个值是否不全等,不会自动做类型转化
三元运算符,也叫条件运算符
条件表达式?语句1:语句2;
-先对条件表达式求值,如果值为true,执行语句1,返回执行结果;如果为false,执行语句2,返回执行结果
var a = 10;
var b = 20;
var max = a > b ? a : b;
alert(max);
运算符的优先级
逗号","运算符可以分割多个语句,一般在声明多个变量时使用
声明多个变量:var a, b, c;
声明多个变量并赋值:var a=1, b=2, c=3;
优先级
-优先级相同时,先左后右
-先乘除后加减
-&& > ||
-若遇到优先级不清楚的地方,可以使用()改变优先级