1.表达式javascript
1.1原始表达式:包括常亮或直接量,关键字和变量。其中直接量是直接在表达式中出现的常量。java
1.2对象和数组的初始化表达式:他们不是原始表达式,由于他们所包含的成员或元素都是子表达式。数组
注:对于var arr = [,];在ie下数组长度为2,火狐和谷歌浏览器下长度为1,最后一个逗号后的建立新的undefined元素。浏览器
1.3 函数定义表达式函数
1.4属性访问表达式:获得的是一个对象属性或数组元素值,访问方式为 e.属性名称 或e[索引];若是访问结果为null或undefined,则抛出错误;若是属性名称是一个保留字或包含空格和标点符号或一个数字则必须使用方括号的写法。优化
1.5调用表达式 是一种调用(或执行)函数或方法的语法表示。它以一个函数表达式开始,这个函数表达式指要调用的函数,例 fn(0);spa
1.6 对象建立表达式 建立一个对象并调用一个函数(这个函数称为构造函数)code
2.运算符对象
2.1 算数表达式blog
2.2 逻辑表达式
2.3 赋值表达式
优先级排序
在javascript中全部数字的类型都是浮点型,除法结果也是浮点型,同时 0/0 为NaN。
求余运算的结果一般为整型,但也适用于浮点数
2.4 关于“+”运算符:
(1)若是其中一个操做符是对象,则对象会遵循对象到原始值得转换规则转换为原始类值;
(2)在进行对象到原始值得转换后,若是其中一个操做数是字符串的话,另外一个操做也可换成字符串,而后进行字符串链接。不然二者都会转换成数字或NaN,而后进行加法。
2.5 in运算:左边操做数是一个字符串或能够转换为字符串,右操做数是一个对象。若是右侧的对象拥有一个名为左操做数的值的属性,则返回true。
2.6 instanceof 左边操做符为一个对象,有操做数标识对象的类。若是左侧的对象是右侧类的实例则返回true;
2.7 eval() 若是一个函数调用了eval(),那么解析器没法对这个函数作进一步的优化。而将eval()定义为函数的另外一个问题是他能够被赋予其余名字。
其只有一个参数,若是传入的不是字符串,他直接返回这个参数。若是是字符串则当成javascript进行编译,若是编译错误则报错,若是正确返回值,入没有值返回undefined。它查找变量的值和定义的新变量和函数的操做和局部变量中彻底同样。直接调用eval()时,他老是在调用它的上下文做用域内执行,其余调用为则使用全局对象做为其上下文做用域,而且没法读、写、定义局部变量和函数。eval()容许咱们执行那些对上下文没有任何依赖的全局脚本代码段。
注:ie定义了一个名叫ExecScript()全局函数来完成eval的功能。
2.8 typeof 返回值为操做值对象的的一个字符串
2.9 delete 用来删除对象属性或数组元素,但不能返回值;注:用户用var语句声明的不能被删除一样,经过function定义的函数和函数参数不能被删除。
例:
var ob ={x:1,y:2};
delete ob.x;
x in ob //false,x已经被删除不存在于ob内
2.10 void 出如今操做数以前操做数能够为任意类型,操做数会照常计算,但忽略结果并返回undefined