语句就是js整句或者命令,以分号结束。
基本语句
- 表达式语句
- 复合语句
- 空语句
- 声明语句
JavaScript中有很多语句和控制结构来改变语句的默认执行顺序。
- 条件语句
javaScript解释器可以根据一个 表达式的值来判断是执行还是跳过这些语句,如if语句和switch语句 - 循环语句
可以重复执行语句,如while和for语句 - 跳转语句
可以让解释器跳转至程序的其他部分继续执行,如break,return和throw语句。
条件语句
if语句
if(condition1){
... //如果condition1为true,执行这里。
}else if(condition2){
... //如果condition2为true,执行这里。
}esle{
... //如果都不满足,执行这里
}
如果if和else if同时满足只会按顺序执行第一个判断为true的。
switch语句
switch(value){
case 1:
//value等于1执行这里
break;//停止switch语句
case 2:
//value等于2执行这里
break;
default:
//如果都不满足执行这里
break;
}
循环语句
while语句
var i =0
while(i<10)//i<10 返回false的时候停止循环
{
console.log(i)
i++
}
连续输出0-9之间的值
do/while
do/while循环会至少循环一次
var i=0;
do{
console.log(i)
i++
}while(i<10) //输出0-9
for
for是比较常用的循环和while比较像,通常for循环的表达式如下:
for(初始化;循环条件判断;计数器变量更新)
var i,j
for(i=0,j=10;i<10;i++,j--)
console.log(sum+=i*j)
for/in
for/in 不仅可以遍历数组,还可以遍历对象
var o = {a:1,b:2,c:3}
for(i in o){
console.log(i)
} // a,b,c
for/in循环并不会遍历对象的所有属性,只有可枚举的属性才会遍历到。那么什么是可枚举的属性呢?由js语言核心所定义的内置方法就不是可枚举的。
举个例子:
所有的对象都有方法toString(),但是for/in并不遍历toString()这个方法。因为他是内置方法,不可枚举。
对象可以继承其他对象的属性,那些继承的自定义属性也可以用for/in遍历出来。
对象的可枚举数据的顺序:
- 对象继承了可枚举属性
- 对象具有整数数组索引的属性
- 使用delete删除了对象已有的属性
- 使用Object.defineProperty()或者类似的方法改变了对象的属性。
跳转语句
跳转语句可以使js的执行从一个位置跳转到另一个位置。
标签语句
start : i = 5;
可以使用break和continue跳到此处,break和continue是唯一可以使用语句标签的语句。(标签不能是保留字)
break语句
break作用是退出最内层的循环和switch语句。
var iNum = 0;
for (var i=1; i<10; i++) {
if (i % 5 == 0) {
break;
}
iNum++;
}
alert(iNum); //输出 "4"
continue语句
continue和break类似,但他不退出循环,而是转而执行下一次循环
var iNum = 0;
for (var i=1; i<10; i++) {
if (i % 5 == 0) {
continue;
}
iNum++;
}
alert(iNum); //输出 "8"
return语句
return语句是指定函数调用后的返回值。这里是return语句的语法。
square=(x)=>{
return x*x;
}
square(2) //4
throw语句
在js中,当产生运行时错误或者程序使用throw语句时就会显示地抛出异常。使用try/catch/finally语句可以捕获异常。
factorial=(x)=>{
if(x<0)throw new Error("x不能是负数");//如果输入参数是非法的,则抛出一个异常
//否则,计算出一个值,并正常地返回他
for(var f=1;x>1;f*=x,x--)
return f;
}
当抛出异常时,js解释器会立即停止当前正在执行的逻辑,并跳转至就近的异常处理程序。
try/catch/finally语句
try/catch/finally语句时js的异常处理机制。其中try从句定义了需要处理的异常所在的代码块。当try块某处发生了异常时,调用catch内的代码逻辑。finally块内的逻辑总是会执行。
其他语句类型
with语句
with可以对一个可以按序检索的对象列表进行变量名解析。(js权威指南不推荐使用此方法)
var sMessage = "hello";
with(sMessage) {
alert(toUpperCase()); //输出 "HELLO"
}
debugger语句
debugger语句用来调试。
“use strict”语句
“use strict”是es5引入的一条指令。对于那些没有实现es5的js解释器来说,这只是一条没有副作用的表达式。