运算符
-
运算符也叫做操作符
-
通过运算符可以对一个或多个值进行运算,并获取运算结果
-
比如: typeof 就是运算符,可以来获得一个值的类型
它会将该值的类型以字符串的形式返回
Number String boolean Null Undefined Object
var a=123;
var result= typeof a;
console.log(typeof result);
结果返回String算术运算符
-
+ 可以对两个值进行加法运算,并将结果返回
-
当对非Number类型的值进行运算时,会将这些值转化为Number,再运算。
var result= true +1;
result结果为2任何值和NaN做运算都得NaN
result= NaN+2;
-
如果对两个字符串进行加法运算,则会做拼串,会将两个字符串拼接为一个字符串,并返回
var a=“123”+“234”; a的值为123234
注意 :任何值和字符串做加法运算,都会先转换为字符串
-
-
-
-
*
-
/
-
% 取模运算(取余数)
var result=9%3;
返回0var result=9%5;
返回4
一元运算符
-
只需要一个操作数
-
+
正号 正号不会对数字产生任何影响 -
-
负号 负号可以对数字进行负号得取反 -
对于非Number类型得值
-
它会先转换为Number再运算
-
可以对一个其他数据类型使用+,来将其转换为Number,它得原理和Number()函数一样
var a="18";
a= +a;
a的值变为18,Number类型的-
var result=1+ +"2"+3;
console.log("result"+result);
结果为6
-
-
自增和自减
-
自增++
-
通过自增可以使变量在自身的基础上增加1
-
自增分为两种 后++(a++)和前++(++a)
-
无论是a++还是++a,都会立即使原变量的值自增1
-
不同的是a++和++a的值不同
-
a++的值等于原变量的值(自增前的值)
var d=20;
d=d++;
相当于 var e=d++; d=e;console.log(d);
d的值为20 -
++a的值等于新值(自增后的值)
var d=20;
var result=d++ + ++d + d;
20+22+22结果为64
-
-
-
-
自减–
- 通过自减可以是变量在自身的基础上减1
- 自减分为两种:后–(a–)和前–(--a)
- 无论是a–还是–a,都会立即使原变量的值自减1
- 不同的是a-- 和–a的值不同
- a-- 是变量的原值(自减前的值)
- –a 是变量的新值(自减以后的值)
逻辑运算符
-
! 非
-
非运算 就是对一个布尔值进行取反操作 true–>false false -->true
-
如果取反两次,这个值不会再变
-
对非布尔值进行取反,会先将该值转换为布尔值,再取反.所以我们可以对一个非布尔类型的值两次求非,将其转换为布尔型
-
var b=10;
b=!!b;
!b为false !!b就变为true
-
-
-
&& 短路与:只要左边判断出为false就不再判断右边,返回false
- && 对符号两侧的值进行 与运算
- 运算规则:
- 两边只要有一个为false就返回false
- 只有两个都为true 就返回true
-
|| 或
- 或运算 两个值中只要有一个为true,就返回true
- 第一个值 为 false,则会检查第二个值
- false || alert(“456”); 返回456
- 第一个值 为true就直接返回true
- 第一个值 为 false,则会检查第二个值
- 或运算 两个值中只要有一个为true,就返回true
-
&& || 与非布尔值的情况,在JS中允许逻辑运算符与非布尔值运算的情况
-
对于非布尔值进行 与或运算时,会先将其转换为布尔值,然后再运算,并且返回原值
-
与运算(&&) :找false
- 如果第一个值为true,则必然返回第二个值
var result=13 && 2;
console.log(result);
返回2
- 如果第一个值为false,则必然返回第一个值
var result=NaN&&13;
console.log(result);
返回NaN
- 如果第一个值为true,则必然返回第二个值
-
或运算(||) : 找true
-
如果第一个值为true,则直接返回第一个值
var a=11||22;
console.log(a);
返回11
-
如果第一个值为false,则直接返回第二个值,即使两边都为false
-
var a=NaN||null;
console.log(a);
返回null
-
-
-
赋值运算符
- = : 把符号右侧的值付给左侧的变量
- += : a+=5 --> a=a+5;
- -=
- *=
- %=
关系运算符
-
>
-
<
-
>=
-
<=
-
非数值的情况
-
对于非数值进行比较,会将其转换为数字然后再比较
-
如果符号两侧的值都是字符串,不会将其转换为数字进行比较,而会分别比较字符串中字符的Unicode编码
-
console.log("11"< "5");
trueconsole.log("a"<"b");
true
-
-
比较字符编码时,是一位一位进行比较,如果两位一样则比较下一位,所以借助它来对英文排序
-
console.log("abc"<"bcd");
trueconsole.log("abc"<"aac");
false
-
-
注意: 比较两个字符串型的数字,可能会得到不可预期的结果,所以在比较两个字符串的数字时,一定要转型
-
console.log("1112456"< "5");
trueconsole.log(+"1531" < +"5");
//false +可以用来转成Number型
-
-
Unicode编码
- 在JS中使用Unicode编码 :
- 在字符串中使用转义字符输入Unicode编码 \u四位编码
console.log("\u2620");
输出 ☠
- 在字符串中使用转义字符输入Unicode编码 \u四位编码
- 在网页中使用Unicode编码:
- &#编码; 这里的编码需要的是10进制
<h1>☠</h1>
- &#编码; 这里的编码需要的是10进制
相等运算符
-
== 比较两个值是否相等,相等返回true,不等返回false
- 使用==来比较两个值时,如果值的类型不同,则会自动进行类型转换,将其转换为相同的类型,然后再比较
console.log("1" == 1);
true
- 使用==来比较两个值时,如果值的类型不同,则会自动进行类型转换,将其转换为相同的类型,然后再比较
-
!= 比较两个值是否不等,不等返回true 否则返回false
- 使用!= 来做不相等运算,不相等也会对变量进行自动的类型转换
console.log("1"!= 1);
false
- 使用!= 来做不相等运算,不相等也会对变量进行自动的类型转换
-
=== 全等 用来判断两个值是否全等,
-
它与相等类似,不同的是它不能自动进行类型转换,如果两个值的类型不同,直接返回false
console.log("123" === 123);
false
console.log(null === undefined);
false
-
-
!== 不全等 用来判断两个值是否不全等,
- 和不等类似,不同的是它不能进行自动类型转换,如果俩个值的类型不同,直接返回true
console.log( "123" !== 123);
true
- 和不等类似,不同的是它不能进行自动类型转换,如果俩个值的类型不同,直接返回true
条件运算符(三元运算符)
-
语法 : 条件表达式?语句1:语句2;
-
执行的流程:
-
条件运算符在执行时,首先对条件表达式进行求值。如果该值为true,则执行语句1,并返回执行结果,如果为false,则执行语句2,并返回执行结果
-
var max=a>b?a:b;
var max=a>b ?(a>c ? a:c) :(b>c ? b:c);
不推荐这样写,不方便阅读
-
-
运算符的优先级
- , 运算符 : 使用 , 可以分割多个语句一般可以在声明多个变量时使用
var a,b,c;
声明多个变量var a=1, b=2,c=3;
声明且赋值
- 在JS中有一个运算符优先级的表
var result= 1 || 2 && 3;
result的结果为1。 先2&&3为3 再1||3为1
-