前端宝典【犀牛书】03(表达式+运算符)
一、表达式是js的一个短语
1、原始表达式
常量、直接量、关键字、变量
1. 23 // 数字 直接 量
"hello" // 字符串 直接 量
/pattern/ // 正 则 表达式 直接 量
true //关键字
i //变量
2、初始化表达式
数组、对象初始化表达式每次计算的值都不相同
数组直接量中列表和逗号省略的元素会填充undefine,最后一位则不会
函数定义表达式
var square=function(x){return x*x;}
3、属性访问表达式
expression . identifier 只适用于合法标识符
expression [ expression ] 保留字和空格标点符号或是数字(数组而言),或者属性名不固定,需要计算而得
运算机制:在 . 和 [ 前的表达式会先计算,结果不是对象或数组就转换成对象
后是. 和 标识符 返回标识符所指定的值
后是括号,计算括号内的表达式并转换为字符串
var o={x:1,y:{z:3}};
4、调用表达式
先计算函数表达式后计算参数表达式
表达式是属性访问表达式“方法调用” a.sort()
5、对象创建表达式(构造函数),不需要传参数()可以省略
new Object()
new Point(2,3)
二、运算符是表达式复杂的途径之一
左值:在 JavaScript 中, 变量、 对象 属性 和数 组 元素 均 是 左 值。
运算符的副作用,具有赋值功能的++、delete
eg:let b=(a++)+a
in运算符(重点内容)左边是右边的属性或者数组的下标
左操作数字符串,右操作数为对象
属性名可以延伸至继承属性
instanceof运算符(重点内容),左侧是右侧的实例
左操作数是对象,右操作数是类(即是构造函数)
类可以延伸至父类
加减除余与数学一致
位运算符
1、以对 由 数字 表示 的 二进制 数据 进行 更低 层级 的 按 位 运算。
2、作用于 整数数值 类型 的 操 作数 并 返回 数字。
3、移位 运算符 要求 右 操 作数 在 0~ 31 之间。 在 将其 操作 数 转换 为 无符号 32 位 整数 后, 它们 将 舍弃 第 5 位 之后 的 二进制 位, 以便 生成 一个 位数 正确 的 数字。 需要 注意 的 是, 位 运算符 会 将 NaN、 Infinity 和- Infinity 都 转换 为 0。
&、|、^、~、<<、>>、>>>,有兴趣自行翻阅10进制转换2进制以及原版书籍。
关系运算符
===、==、!=、!==
比较运算符
>=、<=、>、<
逻辑表达式
&& || !
赋值表达式
a= a op b
data[ i++] *= 2;
data[ i++] = data[ i++] * 2; (注意:++运算符影响语句运行所以此情况和上面一行的表达式不相等)