当前位置:首页 > 技术 > 正文内容

JavaScript 语句机制详解

访客 技术 2026年6月10日 1

JavaScript 中的语句以分号结尾,用于执行特定操作。表达式是求值产生结果,而语句则是让某件事发生。赋值、函数调用等具有副作用的表达式可以单独作为语句使用,称为表达式语句。程序由一系列语句构成,默认按顺序执行,但可以通过条件、循环和跳转语句改变执行流程。

1. 表达式语句

常见的表达式语句包括:

  • 赋值操作:如 x = 10y++
  • delete 操作:用于删除对象属性
  • 函数调用:如 console.log("hello")

2. 复合语句与空语句

复合语句

用花括号 {} 将多条语句包裹起来,形成一条复合语句。复合语句结尾不需要分号。注意:在块内声明的变量并不会限制在该块的作用域内。

{
  let a = 1;
  let b = 2;
  // 这里 a 和 b 在块外仍可访问
}

空语句

空语句包含零条语句。如果特意使用空语句,建议添加注释说明意图:

// 初始化数组,使用空语句
for(let i = 0; i < arr.length; arr[i++] = 0) /* 空语句 */;

3. 声明语句

var 声明

var 用于声明一个或多个变量。声明的变量不可通过 delete 删除,初始值为 undefined。多次声明同一变量不会报错。

var x = 5, y = 10;

函数声明

使用 function 关键字声明函数,格式为:

function functionName(参数1, 参数2) {
  // 函数体
}

花括号是必需的。函数声明在嵌套时只能位于外层函数顶部,不能出现在 ifwhile 等语句块中。与函数定义表达式不同,函数声明会将函数名和函数体同时提升至作用域顶部,因此可以在声明之前调用。

4. 条件语句

if 语句

基本形式:if (条件) { ... }。支持 else 和 else if 分支。

switch 语句

switch(val) {
  case 1:
    // 匹配 val === 1
    break;
  case 2:
    // 匹配 val === 2
    break;
  default:
    // 默认分支
}

匹配使用严格相等 ===,不进行类型转换。在函数内可以用 return 替代 break。default 分支可放在任意位置。case 后可以是任意表达式,但应避免有副作用的表达式。

5. 循环语句

while 循环

while (条件) {
  // 循环体
}

do...while 循环

do {
  // 循环体
} while (条件);

for 循环

for (初始化; 条件; 递增) {
  // 循环体
}

三个部分均可省略,但分号必须保留。死循环写法:for(;;){ }。注意 continueforwhile 中的行为差异。

for...in 循环

for (let key in obj) {
  // 遍历 obj 的可枚举属性
}

若 object 为 nullundefined 则跳过循环;若为原始值则自动包装。该循环只枚举可枚举属性。属性遍历顺序通常按定义顺序,但继承属性、数组索引属性或删除操作可能影响顺序。

6. 跳转语句

标签语句

格式:标签名: 语句。标签标识符不能是保留字,且与变量或函数名不冲突。标签在其作用语句内有效,但嵌套的标签不能重名。

outer: for (let i = 0; i < 5; i++) {
  for (let j = 0; j < 5; j++) {
    if (i === 2) break outer;
  }
}

break

用于退出循环或 switch。可与标签配合跳出多层循环。

continue

跳过本次循环剩余部分,进入下一次迭代。同样支持标签。

return

从函数返回值,只能在函数体内使用。

throw

显式抛出异常,通常使用 Error 类型或其子类型:

throw new Error("错误信息");

try/catch/finally

try {
  // 可能抛出异常的代码
} catch (e) {
  // 处理异常
} finally {
  // 总是执行的代码
}

7. 其他语句

  • with:临时扩展作用域链,但可能引起混淆且不利于性能,建议避免使用。
  • debugger:在支持调试的环境下产生断点。
  • "use strict":启用严格模式,适用于脚本或函数作用域。
标签: JavaScript

相关文章

Linux crontab 详解

1) crontab 是什么cron 是 Linux 的定时任务守护进程;crontab 是用来编辑/查看“按时间周期执行命令”的表(cron table)。常见两类:用户 crontab:每个用户一份(crontab -e 编辑)系统级 crontab / cron.d:可指定执行用户(/etc/crontab、/etc/cron.d/*)2) crontab 时间...

富文本里可以允许的 HTML 属性

一、所有标签默认允许的安全属性(极少)class        (可选)id           (通常建议禁用)title️ 注意:id 容易被滥用做锚点注入,很多系统直接禁用class 允许的话最好只允许固定前缀(如 editor-*)二、a 标签允许属性<a href="" t...

Mac 安装 Node.js 指南

方法一:通过官网安装包(最简单,适合初学者)如果你只是想快速安装并开始使用,这是最直接的方法。访问 Node.js 官网。页面会显示两个版本:LTS (Recommended For Most Users):长期支持版,最稳定。建议选这个。Current:最新特性版,包含最新功能但可能不够稳定。下载 .pkg 安装包并运行。按照安装向导点击“下一步”即可完成。方法二:使用 Homebrew 安装(...

Dom\HTML_NO_DEFAULT_NS 的副作用:自动加闭合标签

在使用Dom\HTMLDocument时,Dom\HTML_NO_DEFAULT_NS 将禁止在解析过程中设置元素的命名空间, 此设置是为了与DOMDocument向后兼容而存在的。当使用它时,已知的一个副作用就是:自动加闭合标签例如 </img> 为什么会这样?当你使用:Dom\HTML_NO_DEFAULT_NS文档会变成 无命名空间模式,此时内部更接近 XML...

Laravel 事件和监听器创建

在 Laravel 中,使用 Artisan 命令创建 Events(事件) 和 Listeners(监听器) 是非常高效的。你可以通过以下几种方式来实现:1. 手动创建单个 Event如果你只想创建一个事件类,可以使用 make:event 命令:Bashphp artisan make:event UserRegistered执行后,文件将生成在 app/Even...

自定义域名解析神器 dnsmasq

什么是 dnsmasq?dnsmasq 是一个轻量级、功能强大的网络服务工具,专为小型和中等规模网络设计。它是一个综合的网络基础设施解决方案[1]。dnsmasq 能做什么?功能说明应用场景DNS 转发与缓存将 DNS 查询转发到上游服务器(ISP、Google DNS 等),并在本地缓存结果加快 DNS 查询速度,减少外部 DNS 流量本地 DNS解析本地网络设备的主机名,无需编辑&n...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。