携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第4天,点击查看活动详情
语句(Statement)
语句是代码执行的最小单位,可以说,代码是由语句(Statement)构成的。语句是可以独立执行的单位。
| 语句名称 | 代码 | 节点 |
|---|---|---|
| break语句 | break | BreakStatement |
| continue语句 | continue | ContinueStatement |
| return语句 | return | ReturnStatement |
| debugger语句 | debugger | DebuggerStatement |
| throw语句 | throw Error() | ThrowStatement |
| 代码块 | {} | BlockStatement |
| try/catch语句 | try{}catch(e){} | TryStatement |
| for-in循环语句 | for(let key in obj){} | ForInStatement |
| for循环语句 | for(let i=0;i<10;i++){} | ForStatement |
| while循环语句 | while(true){} | WhileStatement |
| do-while循环语句 | do{}while(true) | DoWhileStatement |
| switch语句 | switch(v){case 1:break;default:;} | SwitchStatement |
| label标签语句 | label:console.log | LabeledStatement |
| with语句 | with(a){} | WithStatement |
label标签语句
label标签语句比较少见,记录一下它的用法。
JS中允许在语句的前面有标签(label),这个标签相当于定位符,用于跳转到程序的任意位置。 (如果有C/C++基础的应该会好理解,它就像C/C++中的goto语句。)
// label语句的格式 >>> label:statement
start:for(let i=0;i<10 ;i++){}
标签名可以是任意标识符(关键字以及保留字除外),语句部分可以是任意语句,因为标签名和变量名分属于不同的命名体系,因此标签名可以和变量名重复,同时,标签名和属性名的语法类似,因此标签名和属性名不能重复。
const labelA = '变量名和标签名可以重复' // 变量名为labelA
labelA:{ // 标签名为labelA
labelA:'这种写法就是错误的,属性名和标签名不能重复' // 属性名为labelA
}
label标签语句常常和break语句以及continue语句搭配在循环中使用,更多使用在多重(嵌套)循环中。
for (let i = 0; i < 10; i++) {
for (let j = 0; j < 10; j++) {
if (i === 5 && j === 5) break
}
}
像上面的代码,一个break语句只能跳出一个循环,但是我们有时候其实是想要在满足某些条件的时候,直接结束整个多重循环,这个时候label语句就派上用场了。
myLabel:for (let i = 0; i < 10; i++) {
for (let j = 0; j < 10; j++) {
if (i === 5 && j === 5) break myLabel
}
}
像上面这样,给语句加上label,然后break就可以直接跳出整个循环了。continue语句的用法与break语句一样。continue命令后面有一个标签名,满足条件时,会跳过当前循环,直接进入下一轮外层循环。如果continue语句后面不使用标签,则只能进入下一轮的内层循环。
声明(Declaration)
声明语句是一种特殊的语句,它执行的逻辑是在作用域内声明一个变量、函数、class、import、export 等。 声明语句用于定义变量,也是代码中一个基础组成部分。
| 声明 | 代码 | 节点 |
|---|---|---|
| 变量 | const a = 1; | VariableDeclaration |
| 函数 | function say(){} | FunctionDeclaration |
| 类 | class C{} | ClassDeclaration |
| 导入 | import d from 'd' | ImportDeclaration |
| 默认导出 | export default e = 1 | ExportDefaultDeclaration |
| 按名称导出 | export {e}; | ExportNamedDeclaration |
| 导出所有 | export * from 'e' | ExportAllDeclaration |