1.运算符
运算符==》底层cup会去计算 会执行操作, 得到一个结果
1.1一元运算符
-
算数运算符
1)浮点数直接运算有精度问题,所以比较判断要注意
2)算数运算符有优先级
3)表达式和返回值:由数字、运算符、变量组成的式子
4) 取余数的特别点:a%b= 永远不会超过a的大小
-
递增递减运算符
1)前置,先自己自加减,先把变量修改了存值、再取值;后置,运算之后在自加减,先取变量的值运算完后再修改值 后存值
2)开发中,一般c++;这种独占一行后置
例子1:
打印:
10(先取值,此时c在内存中的值为10),11(c运算后+1,存进内存11),12(先+1存值,再取值),12(此时内存中的值为12)
例子2:
例子3:
1.2比较运算符
注意:
a < b < c;类型的判断:
先判断 a < b 是true 还是 false ,如果是true 为1、false 为0;
再用 1 或者 0 与 c比较 ,得出结果
1.2.1相等运算符:
1) == 比较运算符 :
- 基本数据与基本数据比较 看 值是否相等(变量.valueof()方法);
- 基本数据类型和引用数据比较(面试),引用数据类型转为字符串比较(变量.toString()方法);
- 引用数据与引用数据比较 ,看空间位置是否一样(引用数据的地址一般都不一样)
2)=== 三等号 比较的是: 值和类型是否全部相等
1.2.2 in运算符:检查右侧对象里面是否拥有左侧属性名,如果有返回true;反之,返回false。
1.2.3instanceof运算符:检查左侧的对象是否是右侧类的实例,如果是返回true;
1.3逻辑运算符
- 逻辑非(!) 这个操作符都会返回一个布尔值
步骤:var a =!值 :第一步判断值的布尔值 第二步取反 第三步赋值
规则:
false:空字符串,0,null,NaN,undefined
true:非空字符串,,非空对象,非0数字
- 逻辑与(&&)和 逻辑或(||)
&&:都为真才为真
||:多为假才为假
1)用布尔值参与的逻辑运算
var result = true && false;
var result = true || false;
2)用123&&456;表达式参与逻辑运算
即短路运算(逻辑中断):当有多个表达式(值),左边的运算结果确定时;就不再运算后面的式子
- &&:
var re=A&&B;
A是一个表达式B也是一个表达式re等于A表达式或者B表达式
//(如果A表达式判定为布尔表达式的值的false)re就是A否则反之B表达式
//如果re为A表达式那么B表达式不运行
- ||:
var re=A||B;
A是一个表达式B也是一个表达式re等于A表达式或者B表达式
//(如果A表达式判定为布尔表达式的值的true,re就是A否则反之B表达式
//如果re为A表达式那么B表达式不运行
补充:
||符号在开发中 往往是优化的代码最常用的js符号
1.4赋值运算符
= 赋值运算符 obj.age+1=20(错误写法,赋值运算符是将等号左边的结果返回给右边的标识符)
1.5三元运算符
语法:条件表达式 ? 表达式1:表达式2
真返回表达式1的值;假返回表达式2的值
1.6逗号运算符
逗号操作符可以在一条语句中执行多个操作
var re = (A,B,C,D,E,F);
var a = (20,c = 50,40)//会把逗号隔开的表达式全部执行(c=50执行了) ,最后一个表达式为结果即re=F;
2.运算符优先级 //遇到运算符就有优先级。
运算符==》底层cup会去计算 会执行操作 得到一个结果
3.表达式
表达式是最简单的语句
表达式与表达式的组合,就是语句 ;语句和语句的配合就变成了程序
- 原始表达式
- 数组初始化表达式:初始化的结果是创建一个新的数组;
补充:JS引擎会认为数组最后一个逗号是结尾的逗号
[,,1]; //长度为3,值分别为:undefined,undefined,1
[,,1,]; //长度为3
[1,,]; //长度为2,值分别为:1,undefined
- 对象初始化表达式:初始化的结果是创建一个新的对象;
- 属性访问表达式
- 调用表达式
- 算术表达式:加减乘除取余,+-*/%;
加法操作的行为表现:
1.如果其中一个操作数是引用类型,优先调用valueOf求值后可以进行加法运算,则加起来;不行再调用toString,再进行字符串拼接。
2.如果其中一个操作数是字符串的话,则另一个也会转成字符串
3.如果两个操作数都是数字,则进行加法运算。