现在的位置: 首页 > 综合 > 正文

JavaScript的语句

2013年10月07日 ⁄ 综合 ⁄ 共 1288字 ⁄ 字号 评论关闭

如果你是C、C++或者Java程序员,那么你一定会发现JavaScript的语句十分面熟。所以这里只讨论JavaScript的比较特别的语句,那些常见语句就省略了。

① for/in语句

for/in语句是个有点特别的循环语句,它的语法如下:

for(variable in object)

statement

variable应该是一个变量名,声明一个变量的var语句,数组的一个元素或者是对象的一个属性。object是一个对象名,或者是计算结果为对象的表达式。statement通常是一个原始语句或者语句块,它构成了循环的主体。

for/in循环提供了一种遍历对象属性的方法。for/in循环的主体对object的每个属性执行一次。在循环体执行之前,对象的一个属性名会被作为字符串赋给变量variable。在循环体内部,可以使用这个变量和“[ ]”运算符来查询该对象属性的值。例如下面的for/in循环将输出一个对象的所有属性名及它的值:

for(var prop in my_object){
document.write("name:"+prop+"; value:"+my_object[prop],"<br>");
}

可以采用下面的代码把一个对象的所有属性名复制到一个数组中:

var o={x:1,y:2,z:3};
var a=new Array();
var i=0;
for(a[i++] in o)/*empty loop body*/;

JavaScript的数组不过是一种特殊的对象。因此for/in循环像枚举对象属性一样枚举数组下标。例如在前面的代码块后面加上下面这行代码可以枚举数组的属性0、1、2:

for(i in a) alert(i);

其实for/in循环并不会遍历对象的所有可能的属性。对象的有些属性以相同的方式标记成了只读的、不可删除的或者不可列举的。这些属性使用for/in循环不能枚举出来。虽然所有的用户定义属性都可以枚举,但是许多内部属性包括所有的内部方法都是不可枚举的。对象可以继承其他对象的属性,那些已继承的用户定义的属性可以使用for/in循环枚举出来。

② var语句

由var语句创建的一个特性或多个特性不能用delete运算符来删除。var语句还能作为for循环和for/in循环的一部分:

for(var i=0;i<10;i++) document.write(i,"<br>");

③ function语句

function语句定义了一个JavaScript函数。function语句的主体必须使用大括号,即使主体只有一条语句。从技术上说,function语句并非是一个语句。在JavaScript程序中,语句会引发动态的行为,但是函数定义描述的却是静态的程序结构。语句是在运行时执行的,而函数定义在解析时发生,并不是在运行时发生,这一事实产生了某些令人吃惊的作用。考虑下面的代码:

alert(f(4));   //16
var f=0;
function f(x){
return x*x;
}
alert(f);    //0

出现这种特殊的结果是由于函数定义和变量定义发生在不同时刻。幸运的是,这种情况并不常常发生。

抱歉!评论已关闭.