//这个函数返回传入参数值的平方
var spuare = function(x) {
    return x * x;
}

spuare(5);

//输出25
// 属性访问表达式运算得到一个对象属性或一个数组元素的值,JavaScript为属性访问定义了两种语法:

expression.xxx
expression[xxx]

// 第一种写法是一个表达式后跟随一个句点和标识符,表达式指定对象,标识符则指定需要访问的属性的名称
// 第二种写法是使用方括号,方括号内是另外一个表达式(这种方法适用于对象和数组)。第二个表达式指定要访问的属性的名称或者代表要访问数组元素的索引

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属性

//不管使用哪种方式的属性访问表达式,在"."和"["之前的表达式总是会首先计算。如果计算结果是null或者undefined,表达式会抛出一个类型错误异常,因为这两个值都不能包含任何属性
//JavaScript中的调用表达式是一种调用(或者执行)函数或者方法的语法方式。它以一个函数表达式开始,这个函数表达式指代了要调用的函数。函数表达式后跟随一对圆括号,括号内是一个以逗号隔开的参数列表,参数可以有0个也可以有多个:

f(0)                                   //f是一个函数表达式;0是一个参数表达式
Math.max(x, y, z)                      //Math.max是一个函数;x,y和z是参数
a.sort()                               //a.sort是一个函数,它没有参数

//当对调用表达式进行求值的时候,首先计算函数表达式,然后计算参数表达式,得到一组参数值。
//如果参数表达式的值不是一个可调用的对象,则抛出一个类型错误异常

任何一个调用表达式都包含一对圆括号和左圆括号之前的表达式。

如果这个表达式是一个属性访问表达式,那么这个调用称做"方法调用"。

//对象创建表达式创建一个对象并调用一个函数(这个函数称做构造函数)初始化新对象的属性。对象创建表达式和函数调用表达式非常类似,只是对象创建表达式之前多了一个关键字new

new object()
new point(2,3)

//如果一个对象创建表达式不需要传入任何参数给构造函数的话,那么这对空圆括号是可以省略掉的;

new object
new date

//当计算一个对象创建表达式的值时,和对象初始化表达式通过{}创建对象的做法一样,JavaScript首先创建一个新的空对象,然后,JavaScript通过传入指定的参数并将这个新对象当做this的值来调用一个指定的函数,这个函数可以使用this来初始化这个新创建对象的属性。那些被当成构造函数的函数不会返回一个值,并且这个新创建并被初始化后的对象就是整个对象创建表达式的值。如果一个构造函数确实返回了一个对象值,那么这个对象就作为整个对象创建表达式的值,而新创建的对象就被废弃了。
05-10 10:44