JavaScript学习心得(三)

时间:2022-01-07 14:14:44

JavaScript学习心得(三)

今天学习JavaScript的表达式

1.数组与对象的初始化初表达式,这里我发现与之前学习的Java不同的是,java数组中需要初始化数组长度才能引用数组长度范围内的数组项,而JavaScript中,只要初始化数组,则 var array = [];或var array = [1, 2, 3],就可以引用超出数组范围的项,则对于前面的array数组可以 array[6] = 1;对于对象,类似的如下:

<span style="font-size:18px;">var p = {x:3.2, y:-1.2};
p //=> Object { x=3.2, y=-1.2}
var q ={};
q.x=3.2;q.y=-1.2;
q //=>Object { x=3.2, y=-1.2}</span>
即使q对象没有事先声明x、y这两个属性,但是在使用时,可以“无中生有”地直接赋值:q.x=3.2; q.y=-1.2;


2.属性访问表达式。这也与java有些不同,JavaSrcipt访问属性以以下两种方式:

expression . identifier

expression [ expression ]

<span style="font-size:18px;">var o = {x:1, y:{z:3}};
var a = [0,4,[5,6]];
o.x //=> 1
o["x"] //=>1
o["y"]["z"] //=>3
a[2] //=>[5,6]
a[2]["1"] //=>5
</span>
在 " . " 和 " [ " 之前的表达式总是首先计算,如果再向下一级或深一层访问如o["y"]["z"],那么JavaScript会把它o["y"]转换为对象(如果o["y"]不是对象或数组)继续访问其内部属性,如果o["y"]为null或undefined就是抛出异常,因为null和undefined这两个值不能包含任意属性。如果对象表达式后跟随句点和标识符,则 “ . ” 的访问方式,会查找由这个标识符所指定的属性的值,并将其作为整个表达式的值返回。如果是 ' [ ] '访问方式,则会计算方括号内的表达式的值并将它转换为字符串。所以o["y"]["z"]返回的是一个字符串或undefined(访问一个不存在的属性)。
另外,如果访问的属性是一个保留字或包含空格和标点符号,或是数字(对数组来说)如a[2]["1"],就要使用expression [ expression ]的访问方式,还有,如果当属性名通过运算得出的值不是固定的值的时候,这时必须使用expression [ expression ]访问。


3.delete,这个delete与C++中的delete不同,在JavaScript中它是用来删除对象属性或者数组元素。


语句

1.空语句。表示法如下:

<span style="font-size:18px;"> ;
for(var i=0; i<100; ++i) ; //空循环
if(isStrue) ; //空内容
while(i<100) ; //空循环
</span>
注意分号;

2.JavaScript中的switch。switch中的case表达式的值是运行时计算的,而C、C++、java中的是编译时常量。相比之下,JavaScript中的switch比较低效。

3.JavaScript中的for/in

<span style="font-size:18px;">var o = [0,1,2,3,4,5,6]
for(var p in o) //将属性名字赋值给变量
console.log(o[p]); //输出每个属性的值
//=>1,2,3,4,5,6
</span>