JavaScript语句详解:从表达式到异常处理

作者:小括号

时间:2026-10-24

浏览:317

本文系统介绍JavaScript中的各类语句。涵盖表达式语句、复合与空语句,详细讲解var与function声明。深入解析if/else、switch条件逻辑,以及while、do/while、for、for/in四种循环机制。此外,还阐述了break、continue、return、throw等跳转语句及try/catch/finally异常处理模式,并简要提及with、debugger与严格模式指令。

文章目录

表达式语句

在JavaScript中,包含副作用的表达式构成了最基础的语句形式。


a= "hello"+name;
i *= 3;
a++;
delete o.x;
alert(a);
window.close();

复合语句和空语句

复合语句

JavaScript支持将多条独立语句组合成一条复合语句(compound statement)。实现方式非常简单,只需使用花括号将多条语句包裹起来即可。


{
	x=a;
	y=b;
	alert(x);
	alert(y);
}

在使用语句块时,有几个关键点需要留意。

首先,语句块的末尾不需要加分号。块内部包含的原始语句必须以分号结尾,但包裹它们的语句块本身不需要分号。

其次,虽然语句块内的各行代码缩进并非强制要求,但保持整齐的缩进能显著提升代码的可读性,使逻辑更易于理解。

最后,必须注意JavaScript不存在块级作用域。这意味着在语句块内部声明的变量并非该块私有,而是受外层作用域规则约束。

空语句

空语句(empty statement)与复合语句相反,它允许语句中包含零条实际执行的语句。


;
for(i=0;i<a.lengthl;a[i++]=0);
if(a==0);

声明语句

var

var语句用于声明一个或多个变量。


var i;
var j=0;
var a,b;
var x=0,y=1;

通过var声明的变量无法使用delete操作符删除。

若var语句中未指定初始化表达式,该变量的初始值将被设为undefined。

function

关键字function用于定义函数。


var f = function(x){ return x+1; }
function f (x) {return x+1; }

f是所声明函数的名称标识符。

函数名后的圆括号内包含参数列表,各参数之间以逗号分隔。

当函数被调用时,这些标识符代表传入函数的实际参数。

函数体由JavaScript语句构成,语句数量不限,且必须用花括号括起来。

在定义函数时,函数体内的语句并不会立即执行。

条件语句

if


if (username == null) //如果username是null或者undefined
	username = "J"  //对其进行定义

if/else

嵌套使用if语句时,必须确保else语句与正确的if语句相匹配。


if(i == j)
{
	if(j==k){
		console.log("i等于k");
	}
}else{ //i不等于j时执行else的语句块
	console.log("i不等于j");
}

else if


if (n == 1){
	//执行代码块
}else if (n == 2){
	//执行代码块
}else{
	//之前的条件都为false时执行这里的代码块
}

switch


switch(n){
	case 1:
	//如果n === 1,执行这里的代码块
	break; //停止执行
	case 2:
	//如果n === 2,执行这里的代码块
	break; //停止执行
	case 3:
	//如果n === 3,执行这里的代码块
	break; //停止执行
	default:
	//如果都不匹配执行这里的代码块
	break; //停止执行
}

循环

JavaScript提供了四种循环语句:while、do/while、for和for/in。

while


var count = 0;
while (count < 10){ 
//count小于10时执行代码块
	console.log(count);
	count++;//控制count避免出现无限循环(死循环)
}

变量count的初始值为0。在循环执行期间,其值每次递增1。当循环执行10次后,表达式值变为false(即count不再小于10),此时while循环结束,JavaScript解释器继续执行下一条语句。

do/while

do/while循环与while循环非常相似,区别在于它是在循环尾部而非顶部检测循环表达式,这意味着循环体至少会执行一次。


var count = 0;
do { 
//count小于10时执行代码块
	console.log(count);
}while (count++ < 10);

首先,do循环要求必须使用关键字do标识循环开始,并用while标识循环结尾及进入条件判断;其次,与while循环不同,do循环以分号结尾。

for


for(1;2;3)
1,2,3分别负责初始化操作、循环条件判断和计数器变量的更新。

输出数字0~9


for (var count=0;count<10;count++)
	console.log(count);

for/in


for (variable in object)

variable通常是一个变量名,也可以是能产生左值的表达式或通过var语句声明的变量,总之必须是一个适用于赋值表达式左侧的值。

object是一个表达式,其计算结果必须是一个对象。

遍历对象属性成员


for (var p in o)
	console.log(o[p])

跳转

标签语句

语句可以添加标签,标签由语句前的标识符和冒号组成。

通过为语句定义标签,可以在程序任意位置通过标签名引用该语句。虽然可以为多条语句定义标签,但在循环和条件判断等语句块上定义标签更为实用。通过为循环定义标签名,可以在循环体内使用break和continue来退出循环或直接跳转到下一个循环的开始。break和continue是JavaScript中唯一可以使用语句标签的语句。


m: while(a != null){
	....
	continue m;
	....
}

break语句

单独使用break语句的作用是立即退出最内层的循环或switch语句。

当循环终止条件非常复杂时,在函数体内使用break语句实现这些条件判断,比直接在循环表达式中写出复杂的终止条件要简单得多。


for (var i = 0;i<a.length; i++){
	if(a[i]==target)break;
}

JavaScript同样允许break关键字后跟随一个语句标签。


break mname;

continue语句

continue语句与break语句非常类似,但它不是退出循环,而是转而执行下一次循环。continue语句的语法与break语句一样简单。


continue;
continue mname;

return语句

return语句只能出现在函数体内,否则将引发语法错误。当执行到return语句时,函数终止执行,并返回return后面的值。

如果没有return语句,函数调用仅依次执行函数体内的每一条语句直到函数结束,最后返回调用程序。

throw语句

所谓异常(exception)是当发生某种异常情况或错误时产生的一个信号。抛出异常即用信号通知发生了错误或异常状况。捕获异常是指处理这个信号,即采取必要手段从异常中恢复。在JavaScript中,当产生运行时错误或者程序使用throw语句时就会显式地抛出异常。


function factorial(x){
	if(x<0) throw new Error("x不能是负数");
	//如果输入参数是非法的,则抛出一个异常
		return f;
}

try/catch/finally语句

其中try从句定义了需要处理的异常所在的代码块。catch从句跟随在try从句之后,当try块内某处发生异常时,调用catch内的代码逻辑。catch从句后跟随finally块,后者中放置清理代码,不管try块中是否产生异常,finally块内的逻辑总是会执行。尽管catch和finally都是可选的,但try从句需要至少二者之一与之组成完整的语句。


try{
	//需要处理的异常的代码块
}catch(e){
	//try语句抛出异常后 执行这里的代码
	//可以基于特定的原因处理这个异常
	//可以通过throw语句重新抛出异常
}finally{
	//不管try语句块是否抛出了异常,这里的代码总是执行
	//终止try语句块的方式有:
	//1.正常终止,执行完语句块的最后一条语句
	//2.通过break、continue或return语句终止
	//3.抛出一个异常,异常被catch捕获
	//4.抛出一个异常,异常未被捕获,继续向上传播
}

其他语句类型

with语句

一个可以按序检索的对象列表,通过它可以进行变量名解析。with语句用于临时扩展作用域链。


可能会使用类似下面这种表达式来访问一个HTML表单中的元素:
document.forms[0].address.value
如果这种表达式在代码中多次出现,
则可以使用with语句将form对象添加至作用域链的顶层:
with(document.forms[0]){
name.value='';
address.value='';
email.value='';
}

这种方法减少了大量的输入,不用再为每个属性名添加document.forms[0]前缀。这个对象临时挂载在作用域链上,当JavaScript需要解析诸如address的标识符时,就会自动在这个对象中查找。

debugger语句

debugger语句通常什么也不做。然而,当调试程序可用并运行的时候,JavaScript解释器将会(非必需)以调式模式运行。实际上,这条语句用来产生一个断点(breakpoint),JavaScript代码的执行会停止在断点的位置,这时可以使用调试器输出变量的值、检查调用栈等。

“use strict”

“use strict”是ECMAScript 5引入的一条指令。指令不是语句(但非常接近于语句)。

使用“use strict”指令的目的是说明(脚本或函数中)后续的代码将会解析为严格代码(strict code)。如果顶层(不在任何函数内的)代码使用了“use strict”指令,那么它们就是严格代码。如果函数体定义所处的代码是严格代码或者函数体使用了“use strict”指令,那么函数体的代码也是严格代码。如果eval()调用时所处的代码是严格代码或者eval()要执行的字符串中使用了“scrict code”指令,则eval()内的代码是严格代码。

总结表

表达式语句

总结

本篇文章就到这里了,希望能给你带来帮助,也希望您能够多多关注本站的更多内容!

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章