原始表达式(primary expression)
对象和数组的初始化表达式
对象和数组初始化表达式实际上是一个新创建的对象和数组
数组直接量中的列表逗号之间的元素可以省略,这时省略的空位会填充值underfined。
eg:这个数组包含5个元素,其中三个元素是underfined
var spareArray=[1,,,,5];
对象初始化表达式和数组初始化表达式非常类似,只是方括号被花括号代替,并且每个子表达式都包含一个属性名和一个冒号作为前缀:
eg:var p={x:2.3,y=1.2};
var q={};
q.x=2.3;q.y=1.2; //q的属性成员和p的一样
函数定义表达式
一个典型的函数定义表达式包含关键字function,跟随其后的是一对圆括号,括号内是一个以逗号分割的列表,列表含有0个或多个标识符,然后再跟随一个由花括号包裹的js代码段:
//这个函数返回传入参数值得平方
var square=function(x){return x*x;}
属性访问表达式
js为属性访问定义了两种语法:
expression.identifer 表达式
exopression [expression] 对象和数组
eg: 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属性
“++”当运算符在操作数之前,称为“前增量”运算符,它对操作数进行增量计算,并返回计算后的值。
当运算符在操作数之后,称之“后增量”运算符,它对操作符进行增量计算,但返回未做增量计算的值。
var i=1 ,j=++i; //i和j的值都是2 先计算再赋值
var i=1,j=i++; //i=2.j=1 先赋值在计算
“=”,“==”,“===”(赋值,相等,恒等)
in运算符
in运算符希望它的左操作数是一个字符串或可以转换为字符串,希望他的右操作数是一个对象。如果右侧的对象拥有一个名为左操作数值的属性名,那么表达式返回ture,
eg:var point ={x:1,y:1}; //定义一个对象
”x“ in point //=>ture:对象有一个名为”x“的属性
”z“ in point //=>false:对象中不存在名为”z“的属性
”toString“ in point //=>ture:对象继承了toString()方法
var data =[7,8,9]; //拥有三个元素的数组
”0“ in data // =>ture:数组包含元素”0“
1 in data //=>ture:数字转换为字符串
3 in data //=>false:没有索引为3的元素
78页