表达式(expression):js中的一个短语,js解释器会计算出(evalute)一个结果
原始表达式
原始表达式:简单表达式(primary expression),最小单位,包含常量,直接量,关键字,变量。
直接量原始表达式
"hello"//字符串直接量
/parttern///正则表达式直接量
保留字原始表达式
ture//return boolen:真
false//return boolen:假
null//return boolen:空
this//return:当前对象
i//return variable i
sum//return sum
undefined//undefined是全局变量,和null不同,不是关键字
代码中有标识符,对不存在的标识符,js会当作变量取查找,未找到,return reference error
对象和数组的初始化表达式
数组初始化
[]//一个空数组
[1+2,3+4]
var matrix=[[1,2,3],[4,5,6],[7,8,9]];
var sparesArry=[1,,,,5]//空元素为undefined;
var p={x:2.3,y:-1.2};//一个拥有两个属性成员的对象
var p={};//null object
q.x=2.3;q.y=-1.2//q的成员和p的成员一样
对象直接量也可以嵌套
var rectangle={upperLeft:{x:2,y:2},
lowerRight:{x:4,y:5}}
var side=1;
var square={"upperLeft":{x:p.x,y:p.y}}
函数定义表达式
从某种意义上讲函数定义表达式可称为函数直接量
var square=function(x){return x*x;}
属性访问表达式
语法:
expression.indentifier
expression[expression]
var o={x:1,y:{z:3}};//一个实例对象
var a={o,4,[5,6]};//一个包含着个对象的实例数组
o.x//=>1
o.y.z;//=>3
o["x"];//=>1
a[1];//=>4
a[2]["1"]//=>6
a[o].x//=>1
在“.”或“[”之前的表达式总会受限计算。如计算结果是null undefined则表达式抛出一个类型错误。
属性访问表达式
如果属性名称是保留字或包含空格,使用[]
调用表达式
invocation(调用)
expression(表达式)
f(0)//
Math.max(x,y,x)//
z.sort()
如果函数表达式的值不是一个可调用的对象,则抛出类型错误
如函数return 语句返回值,则返回值是整个调用表达式的值,否则为深度空undefined
对象创建表达式
(object creatino expression)
创建对象并调用一个函数(构造函数)初始化新对象的属性(传入参数)
new object();new point(4,3)
如对象创建表达式不需要传入任何参数进构造函数
new object;new date