JS 的基本语法

164 阅读4分钟

什么是表达式和语句

表达式(expression)

表达式是一组代码的集合,它返回一个值。

每一个合法的表达式都能计算成某个值,但从概念上讲,有两种类型的表达式:有副作用的(比如赋值)和单纯计算求值的。

JavaScript有以下表达式类型:

  • 算数: 得出一个数字, 例如 3.14159. (通常使用算数运算符。)
  • 字符串: 得出一个字符串, 例如, "Fred" 或 "234". (通常使用字符串运算符.)
  • 逻辑值: 得出true或者false. (经常涉及到逻辑运算符.)
  • 基本表达式: javascript中基本的关键字和一般表达式。
  • 左值表达式: 分配给左值。

语句(statement)

JavaScript 应用程序是由许多语法正确的语句组成的。单个语句可以跨多行。如果每个语句用分号隔开,那么多个语句可以在一行中出现。

区别

如果JavaScript需要一个语句,你也可以写一个表达式,因为有一个东西叫做表达式语句;而反过来就不行。

标识符的规则

在JavaScript中,标识符只能包含字母或数字或下划线(_)或美元符号($),且不能以数字开头。标识符与字符串不同之处在于字符串是数据,而标识符是代码的一部分。在 JavaScript 中,无法将标识符转换为字符串,但有时可以将字符串解析为标识符。

if else 语句

当指定条件为真,if 语句会执行一段语句。如果条件为假,则执行另一段语句。

if (condition)
   statement1
[else
   statement2]

falsy值

undefinednull0NaN空字符串("")。任何一个值,只要它不是五个falsy值之一,那么无论是任何对象,即使是值为假的Boolean对象,在条件语句中都为真。

while for 语句

while

while 语句可以在某个条件表达式为真的前提下,循环执行指定的一段代码,直到那个表达式不为真时结束循环。

while (condition)
  statement

for

for 语句用于创建一个循环,它包含了三个可选的表达式,这三个表达式被包围在圆括号之中,使用分号分隔,后跟一个用于在循环中执行的语句(通常是一个块语句)。

for ([initialization]; [condition]; [final-expression])
   statement

注意: 每一次循环体执行完毕后,都会执行一次 [final-expression] ,再去判断 [condition] 的值。

无语句的for

function showOffsetPos(sId) {
  var nLeft = 0, nTop = 0;

  for (
    var oItNode = document.getElementById(sId); 
    oItNode;
    nLeft += oItNode.offsetLeft, nTop += oItNode.offsetTop, oItNode = oItNode.offsetParent 
  ); /* 这里的分号是强制性的,是 JavaScript 中的少数几种强制分号的情况。如果没有分号,循环声明之后的行将被视为循环语句。 */
  
  console.log('Offset position of \'' + sId + '\' element:\n left: ' + nLeft + 'px;\n top: ' + nTop + 'px;');
}

break continue

break

break 语句中止当前循环,switch语句或label 语句,并把程序控制流转到紧接着被中止语句后面的语句。

break [label];

break语句包含一个可选的标签,可允许程序摆脱一个被标记的语句。break语句需要内嵌在引用的标签中。被标记的语句可以是任何 块语句;不一定是循环语句。

break语句不能在function函数体中直接使用,break语句应嵌套在要中断的当前循环、switch或label语句中。

continue

continue 声明终止当前循环或标记循环的当前迭代中的语句执行,并在下一次迭代时继续执行循环。

continue [ label ];

与 break 语句的区别在于, continue 并不会终止循环的迭代,而是:

  • 在 while 循环中,控制流跳转回条件判断;
  • 在 for 循环中,控制流跳转到更新语句。 continue 语句可以包含一个可选的标号以控制程序跳转到指定循环的下一次迭代,而非当前循环。此时要求 continue 语句在对应的循环内部。

label

标记语句可以和 break 或 continue 语句一起使用。标记就是在一条语句前面加个可以引用的标识符。

label :
   statement

可使用一个标签来唯一标记一个循环,然后使用 break 或 continue 语句来指示程序是否中断循环或继续执行。

需要注意的是,JavaScript 没有 goto 语句,标记只能和 break 或 continue 一起使用。

个人理解用法为,当循环嵌套时,可以在内层循环直接break或continue掉本次外层循环。


参考自:

  1. 表达式与运算符
  2. 语句和声明
  3. Expressions versus statements in JavaScript
  4. 标识符
  5. if...else
  6. while
  7. for
  8. break
  9. continue
  10. label