JavaScript语句详解:从表达式到异常处理
本文系统介绍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()内的代码是严格代码。
总结表

总结
本篇文章就到这里了,希望能给你带来帮助,也希望您能够多多关注本站的更多内容!
JS语法错误会阻止加载吗?区分SyntaxError与资源加载失败
2026-11-05 16:08:46
JavaScript常见SyntaxError语法错误排查与修复方法
2026-11-05 13:58:44
JS中slice、substring和substr截取字符串的区别
2026-11-05 13:43:47
JS 转 TS 手动迁移最佳实践:从配置 tsconfig 到消除 any 类型
2026-11-05 11:53:32
为什么JS数组push后得到的是数字而不是数组?
2026-11-05 09:59:18
