JavaScript 语句
javascript 语句:
1、它是以分号结束的,用来执行以使某件事发生
2、javascript 程序可以看成一系列可执行语句的集合,一般为顺序执行,但我们可以使用条件、循环或跳转语句来改变执行顺序
javascript 语句分类:
1、表达式语句:诸如赋值和函数调用这些有副作用的表达式,可以作为独立的语句,我们把这种表达式当作语句的用法也称做表达式语句
// 赋值表达式 count = 831143; // 函数调用 console.log(count);
2、复合语句和空语句:我们可以使用花括号将多条语句括起来形成复合语句,而使用分号产生一条空语句
// 花括号创建复合语句 { x = math.pi; sx = math.sin(x); console.log("sin(pi) = " + sx); } // 分号产生空语句,这里将数组内容全部置为 0 for (let i = 0; i < arr.length; arr[i++] = 0) ;
注:javascript 为函数作用域,而不是块级作用域,所以语句里声明的变量并不是语句块私有的
3、声明语句:用来声明或定义变量或函数,如 var、let 和 function
// 声明变量 var a = 12; let b = 4; console.log(a/b); // 声明函数 function test(num) { console.log(num * num); } test(a); // 输出 a^2
注:var 声明的变量无法通过 delete 删除
4、条件语句:通过判断指定表达式的值来决定执行还是跳过某些语句,包括 if/else 和 switch
// expression 为表达式,statement 是当 expression 为真时执行的语句 if (expression) statement; // 我们也可以添加 else [if] 语句增加其分支 if (expression1) statement1; else if (expression2) statement2; ... else statement_else; // switch 通过 expression 的值来确定执行哪个 case 的语句,case 匹配操作采用 "===" 而不是 "==",所以匹配时不做类型转换 // 语句里的 break 是可选的,若无 break 它会在匹配的 case 顺序执行下去,直到遇到 break 或 switch 结束时才结束,若所有 case 都不匹配则执行 default switch(expression) { case 1: statement1; break; case 2: ... case n: statementn; break; default: statement_default; break; }
5、循环语句:我们可以把该语句当成程序路径的一条回路,即让一部分代码重复执行
该类语句包含 while、do/while、for 和 for/in
a、在执行 while 语句之前,javascript 解释器首先计算 expression 的值,若它的值为假,则跳过 statement 转而执行下一条语句;
若值为真,则执行 statement 语句,并重新计算 expression 的值
// 计算 1 + 2 + ... + 9 let sum = 0, count = 10; while (count < 10) { sum = sum+count; count++; } console.log(sum);
b、do/while 与非常相似,但该语句会先执行 statement 的内容,再进行判断,即该语句循环体至少执行一次
// 若为 while 循环,则该循环体不会被执行,因为 while 先进行表达式判断 let num = 0; do{ num = (num+1) * 2; }while (num > 0 && num < 100);
c、for (initialize; test; increment) 先由 initialize 初始化原始值;test 对值进行判断,若假则退出;increment 对该变量进行相应的更新
// 输出 1^2, 2^2, ..., 9^2 for (let i = 1; i < 10; ++i) { console.log(i * i); }
d、for/in 循环可以用来遍历对象
// 输出数组元素 let arr = [1, 2, 3, 4, 5]; for (let num in arr) console.log(num);
6、跳转语句:它使程序的执行从一个位置跳转到另一个位置
a、break:退出最内层循环或 switch 语句
b、continue:执行下一次循环,只能在循环体内使用
c、return:指定函数调用后的返回值,只能在函数体内出现,否则报语法错误
d、throw:用来抛出异常,结束 throw 同一块后面的代码,再由相应 catch 捕获处理
e、try/catch/finally:用来处理异常,try 尝试执行语句,若有异常,则由 catch 块来处理,finally 中放置清理代码
注:若 break 和 continue 带标签,则退出或继续相应标签的代码段;
异常会沿着 javascript 方法的词法结构和调用栈向上传播,若未找到对应的异常处理程序,则程序会将该异常当成错误来处理;
不管 try 块内是否有异常,finally 语句块内的代码总会执行,即使有其他跳转语句跳出 try/catch/finally 语句,finally 仍会在跳出前执行
7、其他语句:with 和 debugger
a、with (obj):将 obj 添加到作用域链的头部,然后执行后续代码,最后将作用域链恢复到原始状态
// with 语句非常难于优化,且与没有使用 with 语句的代码相比,它运行得更慢 with (document.form[0]) { // 等价于 document.form[0].name.vaule = "lemon" name.value = "lemon"; }
b、debugger:用来产生一个断点,代码执行时会停止在断点位置,从而使我们可以调试程序
function check(obj) { if (obj === undefined) debugger; ... }
注:严格模式下禁止使用 with 语句;debugger 语句不会启动调试器,但如果调试器已经在运行中,这条语句才会真正产生一个断点