目录
-
进制
-
16进制:0x开头
-
8进制:0开头
-
2进制:0b开头
-
-
运算符
-
运算符也叫操作符
-
运算符可以对一个或多个值进行运算,并获取运算结果
-
算术运算符:+、-、*、/、%
-
+:
-
可以对两个值进行加法运算,如果是两个字符串则会拼接字符串
-
任何值和字符串作加法运算,都会把该值转换为字符串,然后拼接(除了+外,其余的和字符串运算都不会转换为字符串)
-
加空串转换为字符串:
c =123; c=c+"";
-
-
-
-、*、/:
-
任何值做-、*、/运算都会自动转换为Number
a = 100 - '1'//99 b = 100 * '2'//200 c = 100 / '2'//50
-
-
-
一元运算符:
-
只需要一个操作数
-
+(正号)、-(负号)
-
+:不会对数字产生任何影响
-
-:会对数字进行负号的取反
-
-
对于非Number类型值,会先将其转换为Number,然后再运算。因此可以对一个其他类型的值使用+来将其转换为Number
d = '123' d = +d console.log(typeof d)//number
-
-
自增和自减
-
++:自增
-
通过自增可以使变量在自身的基础上增加1
-
对于一个变量自增以后,原变量的值会立即自增1
-
自增分两种:
-
a++:后自增
-
++a:前自增
-
-
-
--:自减
-
通过自减可以使变量在自身的基础上减少1
-
对于一个变量自减以后,原变量的值会立即自减1
-
自减分两种:
-
a--:后自减
-
--a:前自减
-
-
-
-
逻辑运算符
-
三种逻辑运算符:!(非)、&&(与)、||(或)
-
!:
-
用来进行非运算,相当于取反
-
对一个值进行两次取反,则这个值不会变化。如果对非布尔值进行取反,则会将其转换为布尔值,然后再取反。根据这两个特点,可以对一个非布尔值进行两次取反将一个非布尔值转换为布尔值
e = 1 console.log(!!e)//true console.log(typeof !!e)//boolean
-
-
-
&&:
-
可以对符号两侧的值进行与运算,并返回结果
-
短路与
-
-
||:
-
可以对符号两侧的值进行或运算,并返回结果
-
短路或
-
-
布尔值的逻辑运算
-
对于非布尔值进行与运算时,会先将其转换为布尔值,然后再运算,并且返回原值
-
与运算:
-
如果两个值都为true,则返回后边的true
-
如果两个值都为false,则返回前边的false
var f = 2 && 3 console.log(f)//3 都为true,返回第二个 var g = 0 && '' console.log(g)//0 都为false,返回第一个
-
-
-
或运算
-
如果两个值都为true,则返回前边的true
-
如果两个值都为false,则返回后边的false
var f = 2 || 3 console.log(f)//2 都为true,返回第一个 var g = 0 || '' console.log(g)//'' 都为false,返回第二个
-
-
赋值运算符
-
有很多种种:=、+=、-=、*=、/=、%=
-
=:
-
可以将符号右边的值赋给左边的变量
-
-
+=:
-
”a += 5“ 等价于”a = a + 5“
-
-
其他四种类推+=
-
-
-
关系运算符
-
通过关系运算符比较两个值的大小关系
-
如果关系成立则返回true,如果关系不成立则返回false
-
>、>=、<、<=
-
非数值进行比较时,会将其转换为数字然后再比较。如果两侧都是字符串,则不会转换为数值,而是分别比较字符串中字符从Unicode编码(一位一位进行比较,比较中文时没有意义)
-
如果比较两个字符串型的数字时,可能会得到不可预期的结果,可将字符串转换为数字再比较,可在字符串前添加+号,如+"5"
-
-
相等运算符
-
==相等:
-
相等运算符比较两个值是否相等,相等则返回true,不等返回false
-
数据类型不一样时,会自动做类型转换
-
NaN不和任何值相等,包括自身
console.log(1 == '1')//true console.log(null == 0)//false console.log(undefined == null)//true,undefined衍生自null,所以相等 console.log(NaN == NaN)//false,NaN不和任何值相等,包括自身
-
-
!=不相等:
-
相等运算符比较两个值是否不相等,不相等则返回true,相等返回false
-
类型不同会自动做类型转换
-
-
===全等:
-
和==相似,但是不会做类型转换,类型不同则不相等
-
-
!==不全等:
-
和!=相似,但是不会做类型转换,类型不同则直接相等
-
-
isNaN()函数
-
用来检查一个值是否是NaN
var b=NaN; console.log(isNaN(b))//true
-
-
-
三目运算符(条件运算符)
-
语法:
条件表达式 ? 语句1 : 语句2; var a = 30; var b = 20; c = a > b ? 'a大' : 'b大' console.log(c)//a大
-
执行流程:
-
首先对条件表达式进行求值
-
如果结果为true,则执行语句1,并返回执行结果
-
如果结果为false,则执行语句2,并返回执行结果
-
-
如果条件表达式不是布尔值,会被转换为布尔值在进行运算
-
逗号运算符
-
可以用来声明多个变量并赋值
var a=1, b=2, c=3
-
-
运算符优先级
-
优先级不需要记忆,使用括号()就行
-
-
-
-