原始表达式
原始表达式就是最简单的表达式,是表达式的最小单位。包含直接量、关键字和变量
如:
"hello" // => 字符串直接量
"/pattern/" // => 正则直接量
true // => 返回布尔值:真
false // => 返回布尔值:假
null // => 返回一个值:空
umdefined // => 这是一个全局变量,和null不同,undefined不是一个关键字
this // => 返回“当前”对象
sum // => 返回标量sum的值
注:
1.this并不是一个常量,它在代码不同的地方,返回的值也不同
2.在ES5中对不存在的变量进行求值会抛出一个引用错误
对象和数组的初始表达式
实际上是一个新创建的对象和数组
数组的初始化表达式是通过一对方括号和其内由逗号隔开的列表组成的,初始化的结果是一个新创建的数组
[] // => 一个空数组
[1+2, 3+4] // => 拥有两个元素的数组 3和7
var matrix = [[1,2,3], [4,5,6]] // =>表达方式可以嵌套
数组直接量的元素列表逗号之间元素可以省略,如:
var sparseArray = [1,,,,5]; // => 中间的三个元素是undefined
但是当结尾处有逗号时,并不会创建一个新的值为undefined的元素
对象初始化和数组类似:
var p = {x:2.3, y:-1.2} // => 一个拥有两个属性的对象
var q = {}; // => 一个空对象
函数定义表达式
函数定义表达式定义一个js函数,可称为函数直接量。
一个典型的函数定义表达式:
var square = function (x) {return x * x}; //函数返回传入参数值的平方
属性访问表达式
属性访问表达式时一个表达式后跟随一个句点和标识符。
var o = {x: 1, y: {z: 3}}; // => 一个对象
var a = [o, 4, [5, 6]]; // => 数组
o.x // => 1:表达式o的x属性
o.y.z // => 3:表达式o.y的z属性
o["x"] // => 1:对象o的x属性
a[1] // => 4:表达式a中索引为1的元素
a[2]["1"] // => 6:表达式a[2]中索引为1的元素
a[0].x // => 1:表达式a[0]的x属性
调用表达式
调用表达式是一种调用函数或方法的语法。
f(0) // => f是一个函数表达式,0是一个参数
Math.max(x, y, z) // => Math.max是函数,xyz时参数
a.sort() // => a.sort是函数,没有参数
对象创建表达式
创建一个对象并调用一个函数初始化新对象的属性
new Object()
new Point(2,3)
//当不需要传参时可写为:new Object