if...else
switch
var num = 1;
switch(num){
case 0: console.log(0);
case 1: console.log(1);
case 2: console.log(2);
case 3: console.log(3);
}
//打印3,因为没有break
for
while
do...while
continue break
throw
立即停止正在执行的程序,跳转至就近的逻辑异常处理程序。
function factorial (n) {
if(isNaN(n)) throw new Error('请输入数字,HOHO');
if(n == 1) return 1;
return n*factorial(n-1);//递归
}
var n = factorial(3);//3*factorial(2)--3*2*factorial(1)--3*2*1
console.log(n);//6
var n = factorial('a05');
console.log(n);
var n = factorial(5);
console.log(n);
throw抛出异常该异常可以是 JavaScript 字符串、数字、逻辑值或对象。
lable
标签语句,在语句之前加上冒号:可标记 JavaScript 语句。通过lable标签指向了循环,break lable结束lable指向的循环,continue lable跳出lable指向的循环
在带break的语句中加入label:
var num = 0;
outPoint://这里为label,标签名为outPoint
for (var i = 0 ; i < 10 ; i++){
console.log("i="+i)
for (var j = 0 ; j < 10 ; j++){
console.log("j="+j)
if( i == 5 && j == 5 ){
console.log("i,j=5")
console.log(num)
break outPoint;
}
num++;//55
}
}
循环在 i 为5,j 为5的时候跳出双循环,返回到outPoint层继续执行除循环外的接下来的操作,输出 55
在带continue的语句中加入label
var num = 0;
outPoint:
for (var i = 0 ; i < 10 ; i++){
console.log("i="+i)
for (var j = 0 ; j < 10 ; j++){
console.log("j="+j)
if( i == 5 && j == 5 ){
console.log("i,j=5")
console.log(num)
continue outPoint;
}
num++;//95
}
}
console.log(num);
输出95,循环在 i 为5,j 为5的时候跳出双循环,返回到outPoint层继续执行未结束的循环,即从i=6开始,num只跳过了五次++
需要注意的不要过度使用label会给调试带来麻烦,使用时要有描述性的标签,也同时不要嵌套过多的循环。
try...catch...finally
try-catch-finally是JavaScript的异常处理机制。
try {
if (num == 10) {
throw e;
}
} catch (e) {
console.log('只有错误的时候我才会打印' + e)
} finally {
console.log('无论如何我都会打印');
}
异常对象e里面有两个属性name和message,分别代表错误类型和错误描述信息。
//var a = 90;
try{
console.log(a);
}
catch(e){
console.log(e.name); //返回错误类型
console.log(e.message); //错误描述
}
finally{
console.log('大会到此结束');
}
标签:语句,console,log,factorial,++,num,var
From: https://www.cnblogs.com/Kongqingzhi/p/16608455.html