运算符:也叫操作符,通过运算符可以对一个或多个值进行运算
比如: typeof就是运算符,可以来获得一个值的类型
var a = 123;
var result = typeof a;
console.1og(result);
console .1og(typeof a);
她会将该值的类型以字 符串的形式返回。number string boolean undefined object
算数运算符
当对非Number类型的值进行运算时 会将这些值转换为Number然后在运算
任何值和NaN做运算都得NaN
+ :可以对两个值进行加法运算,并将结果返回
如果对两个字符串进行加法运算, 则会做拼串,会将两个字符串拼接为一个字符串,并返回
任何的值和字符串做加法运算,都会先转换为字符串,然后再和字符串做拼串的操作
我们可以利用这一特点, 来将一个任意的数据类型转换为String
我们只需要为任意的数据类型+一个"”即可将其转换为String
这是一种隐式的类型转换,由浏览器自动完成,实际上它也是调用String( )函数
var C = 123;
c=C+"";
C = String(c);|
console.log("c = "+c) ;
result=1 + 2 +"3";//33
result . "1”+ 2+3;//123
console.1og("result = "+result) ;
- :可以对两个值个值进行减法运算,并将结果返回
* : 可以对两个值进行乘法运算
/ :可以对两个值进行除法运算
% :取模运算(取余数)
任何值做 - * / 运算时都会自动转换为Number,我们可以利用这 -特点做隐式的类型转换
可以通过为一个值-0 *1 /1来将其转换为Number.原理和Number()函效一样,使用起来更加简单
var d="123";
//d=d-0;
console.log("d="+d);
console.log(typeof d);
一元运算符: 只需要一个操作数
+正号,正号不会对数字产生任何影响
-负号,负号可以对数字进行负号的取反
对于非Number类型的值。它会将先转换为Number.然后在运算
可以对一个其他的数据类型使用+ ,来将其转换为number。它的原理和Number()函数一样
string e="string";
console.log(typeof e);
e=+e
console.log(typeof e);
在这里插入代码片
逻辑运算符:
!非 -可以用来对一个值进行非运算
-所谓非运算就是值对一个布尔值进行取反操作,
-true变false,false变true
-如果对一个值进行两次取反,它不会变化
-如果对非布尔值进行元素,则会将其转换为布尔值,然后再取反
所以我们可以利用该特点,来将一一个其他的数据类型转换为布尔值
可以为一个任意 数据类型取两次反,来将其转换为布尔值,原理和Boolean( )函数一样
&&与 - &&可以对符号两侧的值进行与运算并返回结果
-运算规则:两个值中只要有一个值为false就返回false,只有两个值都为true时,才会返回true
- JS中的“与”属于短路的与,如果第一 一个值为false,则不会看第二个值
//第一个值为true,会检查第二个值
//true && alert("看我出不出来! ↑");
//第一个值为false, 不会检查第二个值
//false && alert("看我出不出来! ! ");
//两个都是false,则返回false
result = false|I false;
||或 -||可以对符号两侧的值进行或运算并返回结果
-运算规则: -两个值中只要有一个true,就返回true.如果两个值 都为false,才返回false
JS中的“或”属于短路的或.如果第一个值为true,则不会检查第二个值
//第一个值为false,则会检查第二个值
//false|l alert("123");
//第一个值为true,则不再检查第二个值
//trueII alert("123") ;
&&||非 布尔值的情况:对于非布尔值进行与或运算时,会向我其转换为布尔值,然后再运算,并且返回原值
与运算: (如果两个值都为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.任何值和NaN做任何比较都是false
>大于号 -判断符号左侧的值是否大于右侧的
如果关系成立,返回true. 如果关系不成立则返回false
>=大于等于 -判断符号左侧的值是否大于或等于右侧的值
<小于号
<=小于等于
//比较两个字符串时,比较的是字符串的字符编码
//console.1og("a" < "b");//true
//比较字符编码时是一位一位进行比较
//如果两位一样,则比较下一位,所以借用它来对英文进行排序
//console.1og("abc" < "bcd");//true
//比较中文时没有意义
//console.1og("戒”> "我"); //true
//如果比较的两个字符串型的数字,可能会得到不可预期的结果
//注意:在比较两个字符审型的数字时,一定一定定要转型
console.1og("11123123123123123123" < +"5");
非数值的情况
-对于非数值进行比较时, 会将其转换为数字然后在比较
-如果符号两侧的值都是字符串不会将其转换为数字进行比较,而会分别比较字符串中字符Unicode编码
在字符串中使用转义字符输入Unicode编码:\u四位编码 console. log("\u0031”);
在网页中使用Unicode编码:&#煸码; 这里的编码需要的是10进制。<h1>Će; </h1>
相等运算符 用来比较两个值是否相等,如果相等会返回true, 否则返回false
==来比较两个值时, 如果值的类型不同,则会自动进行类型转换,将其转换为相同的类型然后在比较
undefined衍生自null。所以这两个值做相等判断时, 会返回true
NaN不和任何值相等,包括他本身
console.log(NaN == NaN); //false
varb=NaN;
//判断b的值是否是NaN
//console.log(b == NaN);
可以通过isNaN()函数来判断一个值是否是NaN.如果该值 是NaN则返回true,否则返回falsec
onsole. log(isNaN(b));
不相等 不相等用来判断两个值是否不相等,如果不相等返回true,否则返回false
-使用!=来做不相等运算
-不相等也会对变量进行自动的类型转换,如果转换后相等它也会返回false
全等=== -用来判断两个值是否全等,它和相等类似,不同的是它不会做自动的类型转换
如果两个值的类型不同,直接返回false
全等不会做类型转换,null不等于underdined
!= =不全等用来判断两个值是否不全等,和不等类似,不同的是它不会做自动的类型转换
如果两个值的类型不同,直接返回true
条件运算符/三元运算符
语法:条件表达式?语句1:语句2;
执行的流程:条件运算符在执行时,首先对条件表达式进行求值,如果该值为true,则执行语句1,并返回执行结果。如果该值为false,则执行语句2,并返回执行结果
vara=30;
var b =43;
varC=50;
//a > b ? alert("a大"):alert("b大");
//获取a和b中的最大值
var max=a>b?a:b;
//获取a~b C中的大值
max=max>C?max:C; console.1og("max="+max);
//这种写法不推荐使用,不方便阅读
var max=a>b?(a>c?a:c):(b > c?b:c);
,运算符 使用,可以分割多个语句,一般可以在声明多个变量时使用,
-使用,运算符同时声明多个变量var a,b,c;
-可以同时声明多个变量并赋值var a=1 , b=2,c=3;alert(b);
运算符优先级的表
在表中越靠上优先级越高,优先级越高越优先计算,如果优先级一样,则从左往右计算.可用()改变