运算符
运算符也叫操作符,会有返回值
通过运算符可以对一个值或多个值进行运算,并获取运算结果
比如:typeof就是运算符,可以获得一个值的类型,以字符串的形式返回
var a=123;
var result=typeof a;
console.log(result);
1.算数运算符
当对非Number类型的值进行运算时,会将这些值转换为Number再运算,任何值和NaN做运算结果都是NaN
任何值和字符串做加法运算,都会先转换为字符串,然后拼串(特殊)
除了加法其余运算符在运算时,任何值都会转换为数字再运算
+:
将两个值进行加法运算,返回运算结果
如果对两个字符串进行+,则会进行拼串
//可以用任意的数据类型+一个""即可将其转换为String类型,这是隐式的类型转换,由浏览器自动完成,实际上他也是调用String()函数
var a=123;
a=a+"";//等同于a=String(a);
console.log(a);//输出为字符串"123"
//加法还常用来连接要输出的值
a=123;
console.log("a的值为:"+a);
-:
对两个值进行减法运算,并把结果返回
*:
对两个值进行乘法运算
/:
对两个值进行乘法运算
//可以通过一个值-0 *1 /1来将其转换为Number型,这也是一种隐式转换,使用起来简单
var a="123";
a=a - 0;
console.log(a);//输出数字型的123
%:
取模运算
2.一元运算符
一元运算符:只需要一个操作数,可以把其他类型转为Number再操作
+:不会产生任何影响
-:对数字进行取反
3.自增和自减
同其他语言,区分a++和++a
4.逻辑运算符
三种逻辑运算符:同其他语言
! 如果对一个非布尔值进行取反,将会将其转换为布尔值,然后再取反
我们可以将任意一个数据类型取两次反,来将其转换为布尔值
&& 具有短路性质,对于非布尔值会先转换为布尔值,然后再运算,并且返回原值(按短路性质推,具体如下:)
如果两个值都是true,则返回后面的
如果有false,返回0
如果两个都是false,返回前面的
|| 具有短路性质
如果第一个值为true,则直接返回第一个值
如果第一个值为false,则返回第二个值
5.赋值运算符
同其他语言
=
+=
-=
6.关系运算符
通过关系运算符可以比较两个值之间的大小关系
如果关系成立它会返回true,如果关系不成立则会返回false
>\<
>= \<=
对于非数值进行比较时,会将其转换为数字然后在比较
如果符号两端都是字符串,不会转换为数字进行比较,而会分别比较字符串中字符的Unicode编码(一位一位进行比较)
所以比较两个字符串型的数字一定要将其中一个转换为数字(前面加+号即可),否则会出现类似"11" < "5"的结果
7.Unicode编码
在字符串中使用转义字符输入Unicode编码可以显示对于的东西
在js中:直接"\u四位编号" 这里的编号是十六进制的
console.log("\u2620");//就像这样
在网页中:&#编码; 这里的编码是十进制的
<h1> </h1>//就像这样
8.相等运算符
相等:同其他语言 == 相等返回true,不相等返回false
当使用==来比较两个值时,两个值类型不同会先进行类型转换,转成一样的,大部分情况都是转换成数字,不一定
undefined衍生自null,所以这两个值做相等时,会返回true
NaN不和任何值相等,包括它本身(所以无法通过console.log(a==NaN)判断一个数是否为NaN,但是可以通过isNaN()函数来判断
不相等:!= 会做类型转换
全等: === 和相等类似,但不会做类型转换,类型不同直接false
不全等:和不相等类似,但不会做类型扎UN哈UN
9.条件运算符
条件运算符也叫三元运算符
语法:
条件表达式?语句1:语句2(同其他语言)
10.运算符的优先级
使用,可以分割多个语句,一般可以在声明多个变量时使用
就像数学中一样,在js中运算符也有优先级规则如下:
上面的优先级高,优先级一样从左往右计算。
Comments NOTHING