算数运算符
运算符也叫操作符,通过运算符能够对一个或多个值进行运算
比方: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()函数来判断一个值是否是 NaN
console.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; //1
var result = (1 || 2) && 3; //3
var result = 1 || (2 && 3); //1