语句是javascript的基本执行单位,javascript中所有语句都以(;)结束,包括赋值语句,算术运算语句,逻辑运算语句,以及一些特殊的语句。
一.语句块
所谓语句块就是用花括号包含的多个语句,语句块是一个整体的执行体类似于单个语句。语句块后不需要以分号结束。语句块不能作为变量的作用域。
<script type="text/javascript">
{
x = Math.PI;
document.write(x);
}
</script>
语句块通常用于if-else,for,do-while
二.空语句
最简单的空语句只有一个分号(;),只要用于没有循环体的循环。
<script type="text/javascript">
var a = [];
for (var i = 0; i < 10; a[i++] = i + 20);
for (index in a)
document.write(a[index]+'<br/>');
</script>
三.异常抛出语句
javascript支持异常处理,支持手动抛出异常,javascript所有异常都属于Error对象,当javascript需要抛出异常时,总是通过throw语句抛出Error对象,语法如下:
throw new Error(errorstring);
javascript既允许在代码执行过程中抛出异常,也允许在函数定义中抛出异常。在代码执行过程中,一旦遇到异常,立即寻找对应的catch模块,如果没有对应的catch模块,异常将传播给浏览器,程序将非正常终止。
<script type="text/javascript">
for (var i = 0; i < 10; i++) {
document.write(i + '<br/>');
if (i > 4)
throw new Error("自定义错误");
}
</script>
当i=5时手动抛出异常,但没有catch模块,因而异常传播到浏览器,引起程序非正常终止,浏览器也有相关错误提示(chrome浏览器按ctrl+shift+i打开调试控制台)
Uncaught Error: 自定义错误 localhost/:46
host:localhost
data:undefined
event.returnValue is deprecated. Please use the standard event.preventDefault() instead.
四.异常捕捉语句
当程序出现异常时,这种异常不管是用户手动抛出的异常,还是系统本身的异常,都可使用catch捕捉异常。javascript只有一个异常类,最多只能有一个catch块,语法格式如下:(finally块可省略,一旦指定总会执行)
try {
statements
}
catch (e) {
statements
}
finally {
statements
}
<script type="text/javascript">
try {
for (var i = 0; i < 10; i++) {
document.write(i + '<br/>');
if (i > 4)
throw new Error("自定义错误");
}
}
catch (e) {
document.write("系统出现异常"+e.message+'<br/>');
}
finally {
document.write("finally块" );
}
</script>
输出:
0
1
2
3
4
5
系统出现异常自定义错误
finally块
五.with语句
使用with语句可以避免重复书写对象,语法如下
with(object)
{
statements
}
下面两种写法等价,with语句可以避免重复书写document对象。
<script type="text/javascript">
document.writeln("hello<br/>");
document.writeln("world<br/>");
document.writeln("javascript<br/>");
</script>
<script type="text/javascript">
with (document) {
writeln("hello<br/>");
writeln("world<br/>");
writeln("javascript<br/>");
}
</script>