表达式
1.1 原始表达式
原始表达式包括常量或者直接量,关键字和变量。
例如:
1.23
“hey”
true;
1.2对象和数组的初始表达式
数组的初始表达式
【1+2,2+3】
对象的初始表达式
var p={X:2,y:3};
1.3函数定义表达式
也成为函数直接量。
函数定义表达式包含关键字function,后面是一对圆括号,再是花括号。
var squre = function(x){return 3.14xx};
1.4属性访问表达式
两种语法:
. 适用于访问的属性名是合法的标识符,并且需要知道要访问的属性的名字。
如果属性名称是一个保留字或者包含空格和标点符号,或者是一个数字(对于数组来说),必须使用方括号。还有属性名是通过运算得出来的值而不是固定的值得时候。
[]
1.5调用表达式
首先函数的返回值
有指定的就是那个指定的,
没有指定的就是undefined。
1.6 对象创建表达式
其实就是构造函数。new一个。
可以是
new Object();
new Object;
1.7 运算符概述
1.8 运算符优先级
属性访问的表达式和调用表达式的优先级要比所有的运算符都高。
1.9 运算符的结合性
注意一元运算符和赋值和三元条件运算符都具有从右到左的结合性。
1.10 算术表达式
很经典的例子:
a=1;
b=(a++)+a;
1)先计算b;
2)在计算a++(假设值是c) 1
3)计算a,2(注意这里变成了2奥)
4)计算c+a,
5)将c+a的结果赋值给b。
结果是3。
1.11 加号运算符
(1)当两个数字都是数字的时候,结果是数字。
(2)当两个都是字符串的时候,结果是字符串。
(3)一个操作数是字符串或者转换为字符串的对象,另外一个操作数也会变为字符串,结果是字符串,
(4)两个操作数都不是类字符串的,都将进行算术加法运算。
从原理上说:
(1)如果其中一个操作数是对象,对象会遵循对象到原始值的转换规则转换为原始类值。日期对象用toString()方法执行转换,其他的对象则通过valueOf()方法执行转换。
(2)进行了对象到原始值得转换之后,如果其中一个操作数是字符串的话,另一个也会变成字符串,结果是字符串。
(3)否则,两个操作数会转换为数字(或者NaN),然后进行加法操作。
1.12一元算术运算符
+,-,++,–;
1.13位运算符
按位与&
按位或|
按位异或 ^
按位非 ~
左移 <<
右移 >>
无符号右移>>>
1.14 相等和不等运算符
“=” 赋值
“==” 相等 引用是否相等会转换为数字?
.===. 恒等
1.15 in运算符
in运算符希望他的左操作数是一个字符串或者可以转换为字符串。希望他的右操作数是一个对象。
1.16 instanceof运算符
判断是不是一个具体的对象。
1.17 delete运算符
用来删除对象或者数组元素。