语句
1.表达式语句
i+=a ==>i=i+a
i*=3 ==>i=i*3
i++ ==>先运算后自增
++i ==>先增加后运算
delete运算符,删除一个对象的属性,一般作为语句使用
delete o.x;
函数调用
alert(gretting);
2.复合语句和空语句
使用花括号(大括号)将多条语句括起来,形成一条复合语句(compound statement)
复合语句的作用主要是将多条语句当成一条语句使用
{ x=Math.PI; cx=Math.cos(x); console.log("cos(pi)="+cx); }
注意:1.语句块的结尾不需要分号 2.最好语句块中的语句有良好的缩进
空语句
作用仅仅是占位的语句。内容就是一个分号;
if((a==0)||(b==0)); //这里其实就if语句结束了,因为不使用花括号的if语句默认影响下一行,这里下一行是空语句,就是后面的那个分号 o=null;
3.声明语句
var
var i; var j=0; var q,p; var greeting="hello"+name; var x=2.34,y=Math.cos(0.75),r,theta; var x=2,y=x*x; var x=2, f=function(x){return x*x;}, y=f(x);
var声明的变量无法通过delete语句删除,删除的结果是变量的值改变成了undefined
function
var f=function(x){ retuen x+1;} function f(x){ return x+1; }
4.条件语句
if
if(){...}
if(){..}else{...}
if(){...}else if(){..}else{...}
switch
switch(x){
case 'A': ... break;
case 'B': ... break;
default: ... break;
}
while
while(expression) //先判断后执行
statement
do{...}while() //先执行后判断
for
for(;;){}
for/in
for/in不是增强for循环,但与增强for循环相似。
for(var p in o){
...
}
x代表的不是o里面的元素,而是o元素的索引
首先JavaScript解析器会计算Object表达式,如果表达式为null或undefined,则会跳过循环执行后面的代码。
p也可以使用表达式
for(var i=0;i<arr.length;i++){ console.log(a[i]); } for(var p in o){ console.log(o[p]); }
var a=[1,2,3,4,],i=0;
for(a[i++] in o);
6.跳转语句
标签语句
通过给程序引用标签,可以在任意地方通过标签名引用这条语句。也可以给多条语句定义标签,但局限于给语句块定义标签。
标签语句和c中的loop标记类似.但不完全是,loop会将指针放到loop标记位置
注意在js中只有break和continue可以使用标签语句
label:statement
mainloop: alert("1"); for(var i=0;;){ break mainloop; }
break语句、continue语句,return语句。不多说都一样
throw语句
所谓异常(exception)是当发生了某种异常状况或错误时产生的一个信号。抛出异常,就是用信号通知发生了错误或者异常状况。捕获异常是指处理这个信号,即采用必要的手段从异常中恢复。
在JavaScript中,用throw语句抛出异常,try、catch/finally语句捕获异常
throw语句的语法:
throw expression;
expression的值可以是任意类型的。可以抛出一个代表错误码的数字,或者包含可读的错误消息的字符串。常常用来抛出异常的是Error类型和其子类型
function factorial(x){ if(x<0){ throw new Error("x不能是负数");
/* Error对象有一个name属性表示错误类型,一个message属性存放传递给构造函数的字符串 */ } for(var f=1;x>1;f*=x,x--); return f; }
抛出异常的时候JavaScript解析器会立刻停止当前正在执行的逻辑,并跳转至就近的异常处理程序,直到找到为止,如果没有找到任何异常处理程序,JavaScript就会将异常当成程序错误来处理。
7其他语句类型
with语句
with语句用于临时拓展作用域链
语法: with(object) statement
这条语句将object添加到作用域链的头部,然后执行statement,最后把作用链恢复到原始状态。
只有查找标识符才会用到作用域链,创建新变量时不使用它,with语句提供了读取o的属性的快捷方式,但它并不能创建o的属性。
with(o) x=1;
上面的语句中,如果o中没有x属性,那么它相当于普通的x=1;
例子:
/* with语句常用于简化代码编写 */ with(document.forms[0]){ name.value=""; address.value=""; email.value=""; } /* 相当于 */ var f=document.forms[0]; f.name.value=""; f.address.value=""; f.email.value="";
debugger语句
加上一个debugger标记,相当于产生一个断点
function f(o){ if(o==undefined) debugger; ... }