JavaScript语句

本文深入讲解JavaScript中的控制流语句,包括if、do-while、while、for等循环语句及switch选择语句的语法与使用技巧,并探讨了break、continue等流程控制关键字的应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JavaScript语句

语句(流控制语句)定义了JavaScript中的主要语法,语句通常使用一个或多个关键字

一、if语句

1.相关概念
  1. 语法:if (condition) statement1 else statement2
  2. condition(条件)可以是任意表达式,而且对这个表达式的求值结果不一定是布尔值
  3. JavaScript会自动调用Boolean()转换函数将这个表达式的结果转换为一个布尔值
  4. 如果condition的求值结果为true,则执行statement1;否则,则执行statement2
  5. 而且这两个语句既可以是一行代码,也可以是一个代码块
  6. if (condition1) statement1 else if (condition2) statement2 else statement3
2.示例
if(i>25){
	alert("More than 25.");
}else if(i<0){
	alert("Less than 0.");
}else{
	alert("Between 0 and 25");
}

二、do-while语句

1.相关概念
  1. do-while语句是一种后测试循环语句,即只有在循环体中的代码块执行之后,才会测试出口条件
  2. 在对条件表达式求值之前,循环体内的代码至少会被执行一次
  3. 语法:
2.示例
do{
	statement
}while(expression);
var i=0;
do{
	i +=2;
}while(i<10);
alert(i);
//只要变量i的值小于10,循环一直执行

三、while语句

1.相关概念
  1. while语句属于前测试循环语句
  2. 在循环体内的代码被执行之前,就会对出口条件求值
  3. 循环体内的代码有可能永远不会被执行
  4. 语法:while (expression) statement
2.示例
var i=0;
while(i<10){
	i += 2;
}
//变量i开始时的值为0,每次循环都会递增2。只要i的值小于10,循环就会一直执行下去

四、for语句

1.相关概念
  1. for语句是一种前测试循环语句,在循环之前初始化变量和定义循环后执行代码块
  2. 语法:for (initialization;expression;post-loop-expression) statement
  3. 使用while循环做不到的,使用for循环也做不到。for循环只是把与循环有关的代码集中在了一个位置
  4. for循环的变量初始化表达式中,也可以不使用var关键字。该变量的初始化可以在外部执行
  5. 由于JavaScript中不存在块级作用域,因此在循环内部定义的变量以可以在外部访问到
  6. for语句中的初始化表达式、控制表达式和循环后表达式都是可选的。将这三个表达式全部省略,就会创建一个无限循环。例如:
2.示例
for (;;){//无限循环
	doSomething();
}
var count=10;
for(var i=0;o<count;i++){
	alert(i);
}
alert(i);//10
//只给出控制表达式,实际上就把for循环转换成了while循环
var count=10;
var i=0;
for(;i<count;){
	alert(i);
	i++;
}

五、for-in语句

1.相关概念
  1. for-in语句是一种精准的迭代语句,可以用来枚举对象的属性
  2. 语法:for (property in expression) statement
  3. JavaScript对象的属性没有顺序。因此,通过for-in循环输出的属性名的顺序是不可预测的。顺序差别因游览器而异
  4. 如果表示要迭代的对象的变量值为nullundefinedfor-in语句会抛出错误。ECMAScript5:对这种情况不抛出错误,而是不执行循环体。
  5. 为了保证最大限度的兼容性,建议在使用for-in循环之前,先确认该对象的值不是nullundefined
2.示例
for (var propName in window){
	document.write(propName);
}
//使用for-in循环显示BOM中的window对象的所有属性。每次执行循环时,都会将window对象中存在的一个属性名赋值给变量propName
//这个过程会一直持续到对象中的所有属性都枚举一遍为止
//与for语句类似,控制语句的var操作符不是必须的,但是为了保证使用局部变量,推荐使用

六、label语句

1.相关概念
  1. 使用label语句可以在代码中添加标签,以便将来使用
  2. 语法:label: statement
2.示例
start: for(var i=0;i<count;i++){
	alert(i);
}
//例子中定义的start标签可以在将来由break或continue语句引用。加标签的语句一般都要与for语句等循环语句配合使用

七、break和continue语句

1.相关概念
  1. breakcontinue语句用于在循环中精确地控制代码的执行
  2. break语句会立即退出循环,强制继续执行训话后面的语句
  3. continue语句也是立即退出循环,但退出训话后会从循环的i顶部继续执行
  4. breakcontinue语句都可以与label语句联合使用,从而返回代码中特定的位置。这种联合使用的情况多发生在循环嵌套额情况下
  5. 虽然连用breakcontinuelabel语句能执行复杂的操作,但如果不使用过度,也会有问题
  6. 建议如果使用label语句,一定要使用描述性的标签,同时不要嵌套过多的循环
2.示例
var num=0;
for(var i=1;i<10;i++){
	if(i%5==0){
		break;
	}
	num++;
}
alert(num);//4
var num=0;
for(var i=1;i<10;i++){
	if(i%5==0){
		continue;
	}
	num++;
}
alert(num);//8
var num=0;
outermost:
for(var i=0;i<10;i++){
	for(var j=0;j<10;j++){
		if(i==5&&j==5){
			break outermost;
		}
		num++;
	}
}
alert(num);//55
//outermost标签表示外部的for语句。内部循环break语句带了一个参数:要返回到额标签。添加这个标签的结果将导致break语句不仅会退出内部的for语句,而且以会退出外部的for语句。当变量i和j都等于5时,num的值正好是55
var num=0;
outermost:
for(var i=0;i<10;i++){
	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

八、with语句

1.相关概念
  1. with语句的作用是将代码的作用域设置到一个特定的对象中
  2. 语法:with (expression) statement
  3. 定义with语句的目的主要是为了简化多次编写同一个对象的工作
  4. 严格模式下不循序使用with语句,否则将视为语法错误
var qs=location.search.substring(1);
var hostNmae=location.hostname;
var url=location.href;
2.示例
with(location){
	var qs=search.substring(1);
	var hostNmae=hostname;
	var url=href;
}
//使用with语句关联了location对象。在with语句的代码块内部,每个变量首先被认为是一个局部变量,如果在局部变量的内部找不到该变量的定义,就会查询location对象中是否有同名的属性。如果发现了同名的属性,则以location对象属性的值作为变量的值

九、switch语句

1.相关概念
  1. 可以在switch语句中使用任何数据类型,无论是字符串,还是对象都可以
  2. 每个case的值不一定是常量,可以是变量,甚至是表达式
  3. switch语句在比较值时使用的是全等操作符,因此不会发生类型转换
  4. 语法:
switch(expression){
	case value:statement;break;
	case value:statement;break;
	case value:statement;break;
	case value:statement;break;
	default:statemnet;
}
//switch语句的每一种case的含义:如果表达式等于这个值(value),则执行后面的语句(statement)
//break关键字会导致代码执行流跳出switch语句。如果省略break关键字,就会导致执行完当前case后,继续执行下一个case
//default关键字则用于在表达式不匹配前面任何一种情况的时候,执行的代码
2.示例
switch(i){
	case 25:alert("25");break;
	case 35:alert("35");break;
	case 45:alert("45");break;
	default:alert("Other");
}
switch(i){
	case 25:
	//合并两种情形
	case 35:alert("25 or 35");break;
	case 45:alert("45");break;
	default:alert("Other");
}
switch("hello world"){
	case "hello"+"world":alert("Greeting was found");break;
	case "goodbye":alert("Closing was found");break;
	default:alert("Unexpected message was found");
}
var num=25;
switch(true){
	case num<0:alert("Less than 0");break;
	case num>0&&num<=10:alert("Between 0 and 10");break;
	case num>10&&num<=20;alert(Between 10 and 20);break;
	default:alert("More than 20");
}
//switch语句外面声明了一个变量num。之所以给switch语句传递表达式true,是因为每个case值都可以返回一个布尔值。每个case按照顺序被求值,直到找到匹配的值或者遇到default语句为止

源自
源于整理《JavaScript高级程序设计》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值