语句
语句是JavaScript的基本执行单位。JavaScript要求所有的语句都以分号(;)结束。语句既可以是简单的赋值语句,也可以是算术运算语句,还可以是逻辑运算语句等。除此之外,还有一些特殊的语句,下面具体介绍这些特殊的语句。
语句块
所谓语句块就是使用花括号包含的多个语句,语句块是一个整体的执行体,类似于一个单独的语句。虽然语句块类似于一个单独的语句,但语句块后不需要以分号结束。但语句块中的每个语句都需要以分号结束。
空语句
最简单的空语句仅有一个分号(;),空语句没有丝毫用处,因此实际中几乎不会使用这种空语句,但空语句主要用于没有循环体的循环。
异常抛出语句
JavaScript支持异常处理,支持手动抛出异常。与Java不同的是,JavaScript的异常没有Java那么丰富,JavaScript的所有异常都是Error对象。当JavaScript需要抛出异常时,总是通过throw语句抛出Error对象。抛出Error对象的语法如下:
throw new Error(errorString);
JavaScript既允许在代码执行过程中抛出异常,也允许在函数定义中抛出异常。在代码执行过程中,一旦遇到异常,立即寻找对应的异常捕捉块(catch块),如果没有对应的异常捕捉块,异常将传播给浏览器,程序非正常中止。
例子
<script type="text/javascript">
// 对计数器i循环
for (var i = 0 ; i < 10 ; i++)
{
// 在页面输出i
document.writeln(i + '<br />');
// 当i > 4时,抛出用户自定义异常
if (i > 4)
throw new Error('用户自定义错误');
}
</script>
当i = 5时,手动抛出异常,但没有得到处理,因而传播到浏览器,引起程序非正常中止,浏览器也有关于错误的提示。
异常捕捉语句
当程序出现异常时,这种异常不管是用户手动抛出的异常,还是系统本身的异常,都可使用catch捕捉异常。JavaScript代码运行中一旦出现异常,程序就跳转到对应的catch块。异常捕捉语句的语法格式如下:
try
{
statements
}
catch(e)
{
statements
}
finally
{
statements
}
这种异常捕捉语句大致上类似于Java的异常捕捉语句,但有一些差别:因为JavaScript的异常体系远不如Java丰富,因此无须使用多个catch块。与Java异常机制类似的是,finally块是可以省略的,但一旦指定了finally块,finally代码块就总会获得执行的机会。
例子
try
{
for (var i = 0 ; i < 10 ; i++)
{
// 在页面输出i值
document.writeln(i + '<br />');
// 当i大于4时,抛出异常
if (i > 4)
throw new Error('用户自定义错误');
}
}
// 如果try块中的代码出现异常,自动跳转到catch块执行
catch (e)
{
document.writeln('系统出现异常' + e.message + '<br/>');
}
// finally块的代码总可以获得执行的机会
finally
{
document.writeln('系统的finally块');
}
归纳起来,JavaScript异常机制与Java异常机制存在如下区别。
➢ JavaScript只有一个异常类:Error,无须在定义函数时声明抛出该异常,所以没有throws关键字。
➢ JavaScript是弱类型语言,所以catch语句后括号里的异常实例无须声明类型。
➢ JavaScript只有一个异常类,所以try块后最多只能有一个catch块。
➢ 获取异常的描述信息是通过异常对象的message属性,而不是通过getMessage()方法实现的。
with语句
with语句是一种更简洁的写法,使用with语句可以避免重复书写对象。with语句的语法格式如下:
with(object)
{
statements
}
如果with后的代码块只有一行语句,则可以省略花括号。但在只有一行语句的情况下,使用with语句意义不大。关于with语句的作用,看如下代码:
document.writeln("Hello");
document.writeln("World");
在上面的代码中,多次使用document的writeln方法重复输出静态字符串。使用with语句可以避免重复书写document对象。将上面代码该为如下形式,效果完全相同。
with(document)
{
writeln("Hello");
writeln("World");
}
注:本博客内容节选自李刚编著的疯狂HTML 5/CSS 3/JavaScript讲义 ,详细内容请参阅书籍。