运算符
1.基本运算符
typeof:用来获取一个值的类型以字符串的形式返回
一元运算符 加减乘除
1.1 算术运算符
- ± * / %(取余)
只需要一个
注意:–true为1 false为0 - 加法:可以合并字符串 值与字符串也会转化为字符串
c = c+"" : 拼串作用,注意运算顺序,1+2+“3”和“1”+2
a = “1” +a:为数值 也可转化 - 减号:转化为数值计算 重要!!!
a = +a 也可以转化为数值运算
result 1 + +"2“ + 3 //6
作用:可以取反数值计算
- 除,乘号:正常运算
-0*1/1:转化为Number - 自增自减
a++:是原值,它是个式子
++a:是自增后的值
var d = 20;
var result = d++ + ++d +d; 20+22+22
console.log(result);
输出为64
减法也是相同的
1.2 逻辑运算符
!非
a = !a
--进行非运算,就是对一个布尔值取反,true变false,false变true
--对于非布尔值,先转化为布尔值,再取反
--可以为任意类型取反两次转化为**布尔值**
a = !!a
&&与
对于布尔值
--短路思想:第一个为true,第二个语句可执行
--第一个为false,第二个语句不执行
对于非布尔值
--如果都为真,返回后面的 如return = 0 && 2 返回2
--如果第一个值为true,必然返回第二个值
**就算后面的是0也对不是0也对**
--如果第一个值为false,直接返回即可
||非
对于布尔值
--短路思想:第一个为真时,直接返回真,第二个不执行
对于非布尔值
--如果第一个值为true,则直接返回第一个值
--如果第一个值为false,则返回第二个值
1.3 赋值运算符
= -= += /= %=
1.4 关系运算符
对于数值
var result = 5 >10;
console.log("result = " +result);//false
> 大于号
判断关系是否成立,成立的话,返回ture,不成立的话,返回false
>= 大于等于
5>=4 返回true
< 小于
<= 小于等于** 等于成立也是true 它是或运算
注意!!!!:
--对于非数值,会将其先转化为**数值**再比较
--如果符号两边**都是字符串**时,不会转化为数值比较,而会比较字符串中字符的Unicode编码
"abc">"a":挨个比较。一位一位,相同则比较下一位
所以借用它来对英文排序,比较中文没有意义
--如果比较的是两个字符串型的数字,可能得到的结果不是预期
"11111111111">"3" //false
一定一定要转型:"11111111111"> +"3"
--1>=true //true
0>=null //true
任何值和NAN做任何比较都是false
1.5 相等运算符
1. ==:用来比较两个值是否相等
--如果类型不同,先转化为相同的类型再比较,
一般是转化为Number,字符串和布尔值时
true == "1" //true 1==1
--null和字符串不行
null == "0" //false
--undefined 衍生自null,所以它们相等
--NaN不和任何值相同,包括它本身
--isNaN(b):判断b是不是NaN的函数
var b = NaN;
console.log(isNaN(b));//true
2. != 语法同上
3. ===:全等 类型和值
--undefined === null //false
4. !==:不全等 不会做类型转化
1!=1 //false 1!==1 //true
1.6 条件运算符
三元运算符
语法:
条件表达式?语句1:语句2
--语句为真,执行语句1,语句为假,执行语句2 并返回结果
获取ab最大值
var max = a > b ? a : b;
获取abc最大值
max = max > c ? max : c;
如果条件不是布尔值,会转化 "a"为true ""为false
2. 运算符的优先级
,:可用来多赋值 定义
如:var a,b,c;
与&&在或||上面
只有分组的作用
一个{}的语句:一组语句,要么执行,要么都不执行
一个{}的语句:称为一个代码块