算数运算符

运算符也叫操作符,通过运算符能够对一个或多个值进行运算
比方:typeof就是运算符,能够来取得一个值的类型。它会将该值的类型以字符串的模式返回。number string boolean undefined object
当对非Number类型的值进行运算时,会将这些值转换为Number而后再运算 ,除字符串加法。
任何值和NaN做运算后果都是NaN
任何值做-/运算时都会主动转换成Number。能够利用此特点做隐式类型转化,能够通过一个值-0 、1、 /1来将其转换成Number,原理和Number()一样,应用起来更加简略

算术运算符

+:
能够对两个值进行加法运算,并将后果返回。
如果对两个字符串进行加法运算,则会进行拼串操作,会将两个字符串拼接并返回。
任何的值和字符串做加法运算,都会先转换为字符串,而后再和字符串做拼串的操作。能够利用特点,将一个任意数据类型转换为String,只须要为任意的数据类型+一个""即可。这是一种隐式类型转换,由浏览器主动实现,实际上也是调用String函数
-:
能够对两个值进行减法运算,并将后果返回。
*:
能够对两个值进行乘法运算
/:
能够对两个值进行除法运算
%:
取模运算(取余数)

一元运算符

只须要一个操作数
+:正号
正号不会对数值产生任何影响
-:负号
负号能够对数字进行负号的取反。对于非Number类型的值,会先转换再运算。
留神:
能够对一个其余数据类型应用+正号,来将其转换为number,它的原理和Number()函数一样 a=+a

自增和自减

自增++:
通过自增能够使变量在本身根底上减少1
对于一个变量自增当前,原变量的值会立刻自增1如:a++
自增分成两组:后++(a++)和前++(++a)
无论是a++还是++a,都会立刻使原变量的值自增1
不同的是a++和++a的值不同
a++的值等于原变量的值(自增前的值)
++a的值等于新值(自增后的值)
自减--:
通过自减能够使变量在本身的根底上减1
自减分成两种:后--(a--)和前--(--a)
无论a--还是--a都会立刻使原变量的值自减1
不同的是a--和--a的值不同
a--是变量的原值(自减前的值)
--a是变量的新值(自减后的值)

逻辑运算符

JS中为咱们提供了三种逻辑运算符
! 非
可用来对一个值进行运算
所谓非运算就是指对一个布尔值进行取反操作,true变flase,flase变true
如果对一个值进行两次取反,它不会变动
如果对非布尔值进行运算,则会将其转换为布尔值,而后再进行取反。
所以咱们能够利用该特点,来将一个其余的数据类型转换为布尔值。
能够为一个任意数据类型取两次反,来将其转换为布尔值,原理和Boolean()函数一样
&& 与
&&能够对符号两侧的值进行运算并返回后果
运算规定:两个值中只有有一个值为false就返回false,只有两个值都为true时,才会返回true
如果两个值都是true则返回true
只有有一个false就返回false
JS中的“与”属于短路的与,如果第一个值为false,则不会看第二个值。
第一个值为true会查看第二个值。
|| 或
||能够对符号两侧的值进行运算并返回后果
运算规定:
两个都是false,则返回false。
只有有一个true,就返回true
JS中的“或”属于短路的或
如果第一个值为true则不会查看第二个值。

非布尔值的与或运算

对于非布尔值进行与或运算时,会先将其转换成布尔值,而后再运算,并且返回原值。
与运算:
如果两个值都为true,则返回后边的
如果两个值中有false,则返回靠前的false
如果第一个值为true则必然返回第二个值
如果第一个值为false,则间接返回第一个值
或运算:
如果第一个值为true,则间接返回第一个值
如果第一个值为false,则返回第二个值

赋值运算符

=:能够将符号右侧的值赋值给符号左侧的变量
+-:a += 5等价于a = a+5
-=:a -= 5等价于a = a-5
*=:a ✖= 5等价于a = a*5
/=:a /= 5等价于a = a/5
%=:a %= 5等价于a = a%5

关系运算符

通过关系运算符能够比拟两个值之间的大小关系,如果关系成立它会返回true,如果关系不成立则返回false
>大于号
判断符号左侧的值是否大于右侧的
如果关系成立,则返回true,如果关系不成立则返回false
>=大于等于
判断符号左侧的值是否大于或等于右侧的值
<小于号

非数值的状况

对于非数值进行比拟时,会将其转换为数字,而后再比拟。
任何值和NaN做任何比拟都是false
如果符号两侧的值都是字符串时,不会将其转换为数字进行比拟,而回别离比拟字符串中字符的Unicode编码
比拟字符编码时,是一位一位进行比拟
如果两位一样,则比拟下一位,所以能够借用它来对英文进行排序
比拟中文时没有意义
如果比拟两个字符串型的数字,可能会失去不可预期的后果
所以留神在比拟两个字符串型的数字时,肯定要转型

Unicode编码

在字符串中应用转义字符输入一个Unicode编码,写一个转义字符
“\u四位编码"
在网页中应用Unicode编码,应用
“编码”;这里的编码须要的是10进制

相等运算符

相等 ==

比拟两个值是否相等,如果相等返回true,否则返回false
应用 == 来做相等运算
当应用 == 来比拟两个值时,如果值的类型不同,则会主动进行类型转换,将其转换成雷同的类型,而后再比拟。
undefined衍生自null
所以这俩值做相等判断时,会返回true
console.log(undefined == null); //true
NaN不和任何值相等,包含他自身

var b = NaN;console.log(b == NaN);  //判断b是否是NaN返回false能够通过isNaN()函数来判断一个值是否是NaNconsole.log(inNaN(b));

isNaN()用来判断一个值是否是NaN,如果该值是NaN则返回true,否则返回false

不相等 !=

不相等用来判断两个值是否不相等,如果不相等返回true,否则返回true
应用 != 来做不想等运算
不相等也会对变量进行主动的类型转换,如果转换后相等它也会返回false

全等 ===

用来判断两个值是否全等,和相等相似,不同的是不会做主动的类型转换
如果两个值的类型不同,间接返回false。
null和undefined相等但不全等

不全等 !==

用来判断两个值是否不全等,和不等相似,不同的是它不会做主动的类型转换,如果两个值的类型不同,则间接返回true

条件运算符

条件运算符也叫三元运算符
语法:
条件表达式?语句1:语句2;
条件运算在执行时,首先对条件表达式进行求值,
如果该值为true,则执行语句1,并返回执行后果
如果该值为false,则执行语句2,并返回执行后果
如果条件表达式的求值后果为非布尔值,会将其转换为布尔值,而后再运算

var a = 10;var b = 20;var c = 50;a > b ? alert("a大"):alert("b大");    //返回b大a < b ? alert("a大"):alert("b大");    //返回a大获取a和b的最大值var max = a > b ? a : b;console.log("max = "+max);获取abc中的大值max = max > c ? max : c;或var max = a > b ? (a > c ? a : c ):(b > c ? b : C);(这种写法不举荐应用,不不便浏览)

运算符的优先级

,运算符(逗号运算符)
应用,能够宰割多个语句,个别能够在申明多个变量时应用,
应用,运算符同时申明多个变量

var a , b , c;var a = 1 , b = 2 , c = 3

和数学一样,JS中运算符也有优先级;
比方:先乘除,后加减
在JS中有一个运算符优先级的表,在表中越靠上优先级越高,优先级越高越优先运算,如果优先级一样,则从左往右计算
然而表并不需要记忆,如果遇到优先级不分明的,能够应用()来扭转优先级

var result = 1 || 2 && 3;       //1var result = (1 || 2) && 3;     //3var result = 1 || (2 && 3);     //1