js02
运算符(操作符):通过运算符可以对一个或者多个值来进行运算,并获取运算结果
typeof也是运算符,可以用来获得一个值的类型,返回的是一个字符串
算数运算符
需要两个运算符
对非Number类型的值进行运算时,会将这些值转换成Numder然后再运算
任何值和NaN运算都得NaN
+:可以对两个值进行加法运算,并将结果返回
//true转成Number类型为1,false转成Number类型为0
true+1=2
true+false=1
1.如果对两个字符串进行加法运算,则会做拼串,会将两个字符串拼成一个字符串,并返回
2.任何的值和字符串做加法运算,都会先转换成字符串,然后再和字符串做拼接的操作
3.任何值和字符串相加都会转换成字符串,并做拼串操作。我们可以利用这一特点,来将一个任意的数据类型转换成String,我们只需要为任意的数据类型+一个“ ”即可将其转换为String
这是一种隐式的类型转换,由浏览器自动完成,实际上他也是调用了String
除了加法运算是有字符串时,先转换成字符串类型再进行运算,其余运算都是先自动转换number再进行运算
-:可以对两个值进行减法运算,并将结果返回
会将非Number类型的数据转为Number类型后,再进行运算
*:可以对两个值进行乘法运算
/:可以对两个值进行除法运算
任何值做-,*,/,运算时,都会自动转换为Number,我们可以利用这一特点做隐式的类型转换,可以通过为一个值-0,*1,/1来将其转换为Number,原理和Number()使用起来比较简单但是这个方式没有使用+号来的方便
%:可以对两个值进行取余(模)运算
一元运算符
只需要一个操作符
+:正号,不会对数字产生任何影响
-:负号,对数字进行负号的取反
对于非Number类型的值,它会先转换为Number,然后再进行运算,可以对非Number类型的数据使用+号,来将其转换成Number类型,他的原理和Number()一样
自增和自减
自增(++):通过自增可以是变量再自身的基础上增加1,一个变量自增之后,原变量的值会立即自增1
自增分成两种:后++(a++)和前++(++a),两者都会立即使原变量的值自增1
var a= 1;
//b为a自增前的值,使用的是变量的原始值
//b=a++; //b=1,a=2
//c为a自增后的值,使用的是变量自增后的值
c=++a; //c=3,a=3
自减(–):通过自减可以是变量在自身的基础上减1,变量在自减之后都会使原变量的值自减1
自减分为两种:后–(a–)和前–(--a),意思跟自增一样
逻辑运算符
与(&&):可以对符号两侧的布尔值进行与运算并返回结果
两端的值只要有一个为false,就会返回false,只有两端的值都为true时,才会返回true
js中的“与”属于短路中的与,如果第一个值为false了,就不用继续看第二个值。第一个值为true时,会继续看第二个值
或(||):可以对符号两侧的值进行或运算并返回结果
两端都为false时,才会返回false;只要有一个true,就会返回true
js中的“或”属于短路的或,如果第一个值为true,就不会继续看第二个值
非(!):对一个布尔值进行非取反运算。
1.!true为false,!false为true。
2.对一个值进行两次取反,它不会改变
3.如果对非布尔值进行取反,会先将其转换成布尔值,然后再取反。所以可以利用这一点,可以将其他的数据类型转为布尔值。可以为一个任意数据类型取两次反,来将其转换成布尔值,原理和Boolean()一样
&&、||非布尔值的情况
对于非布尔值进行与或运算时,会先将其转换为布尔值,然后再运算,并且返回原值
与(&&):如果两个值都为true,则返回后边的值;
如果第一个值为true,则必然返回第二个值(不论是true还是false),如果第一个值为false,则直接返回第一个值
||(或):如果第一个值为true,则直接返回第一个值,如果第一个值为false,则直接返回第二个值