1. 1ebel语句
使用label语句可以在代码中添加标签,以便将来使用。以下是label语句的语法:
label: statement
下面是一个示例:
start: for(var i=0; i alert (i);
}
这个例子中定义的start栎签可以在将来由break或continue语句引用。加标签的语句一般都要与for语句等循环语句配合使用。
2. break和continue语句
break和continue语句用于在循环中精确地控制代码的执行。其中,break语句会立即退出循环,强制继续执行循环后面的语句。而continue语句虽然也是立即退出循环,但退出循环后会从循环的顶部继续执行。请看下面的例子:
var num=O;
for (var i=l; i<10; 1++) {
if (i%5==O) {
break;
}
num++;
}
alert (num); //4
这个例子中的for循环会将变量i由1递增至10。在循环体内,有一个if语句检查i的值是否可以被5整除(使用求模操作符)。如果是,则执行break语句退出循环。另一方面,变量num从0开始,用于记录循环执行的次数。在执行break语句之后,要执行的下一行代码是alert()函数,结果显示4。也就是说,在变量i等于5时,循环总共执行了4次;而break语句的执行,导致了循环在num次递增之前就退出了。如果在这里把break替换为continue的话,则可以看到另一种结果:
var num = 0;
for (var i=l; i<10; 1++) {
if (i%5==O) {
continue;
}
num++;
}
alert (num); //8
例子的结果显示8,也就是循环总共执行了8次。当变量i等于5时,循环会在num再次递增之前退出,但接下来执行的是下一次循环,即i的值等于6的循环。于是,循环又继续执行,直到i等于10时自然结束。而mun的最终值之所以是8,是因为continue语句导致它少递增了一次。
break和continue语句都可以与label语句联合使用,从而返回代码中特定的位置。这种联合使用的情况多发生在循环嵌套的情况下,如下面的例子所示:
varriuni=0;
outermost;
for (var i=0;i<10; 1++) {
for (var j=0; j<10; j++) {
if (i==5&&j==5) {
break outermost;
}
num++;
}
}
alert (num); //55
在这个例子中,outermost标签表示外部的for语句。如果每个循环正常执行10次,则num++语句就会正常执行100次。换句话说,如果两个循环都自然结束,num的值应该是100。但内部循环中的break话句带了一个参数:要返回到的标签。添加这个标签的结果将导致break语句不仅会退出内部的for语句(即使用变量j的循环),而且也会退出外部的for语句(即使用变量i的循环)。
为此,南昌网页设计公司前端开发工程师提示,当变量i和j都等于5时,num的值正好是55。同样,continue语句也可以像这样与label语句联用,如下面的例子所示:
varrium=O;
outermost;
for (var i=0; i<10; 1++) {
for (var j=0; j<10; j++) {
if(i==5&&j==5) {
continue outermost;
}
num++;
}
}
alert (num); //95
在这种情况下,continue语句会强制继续执行循环——退出内部循环,执行外部循环。当j是5时,continue语句执行,而这也就意味着内部循环少执行了5次,因此num的结果是95。
虽然联用break、continue和label语句能够执行复杂的操作,但如果使用过度,也会给调试带来麻烦。在此,南昌网络公司百恒网络建议如果使用label语句,一定要使用描述性的标签,同时不要嵌套过多的循环。
3. with语句
with语句的作用是将代码的作用域设置到一个特定的对象中。with语句的语法如下:
with (expression) statement
定义with语句的目的主要是为了简化多次编写同一个对象的工作,如下面的例子所示:
var qs=location.search.substring(l);
var hostName=location.hostname;
var url=location.href;
上面几行代码都包含location对象。如果使用with语句,可以把上面的代码改写成如下所示:
with(location){
var qs=search.substring (1);
var hostName=hostname;
var url=href;
}
在这个重写后的例子中,使用with语句关联了location对象。这意味着在with语句的代码块内部,每个变量首先被认为是一个局部变量,而如果在局部环境中栈不到该变量的定义,就会查询location对象中是否有同名的属性。如果发现了同名属性,则以location对象属性的值作为变量的值。
南昌网站建设公司前前端开发工程师提醒:由于大量使用with语句会导致性能下降,同时也会给调试代码造成困难,因此在开发大型应用程序时,不建议使用with语句.