- JavaScript 教程
- JavaScript 教程
- Javascript - 概述
- Javascript - 功能
- 在浏览器中启用 JavaScript
- JavaScript - 放置在 HTML 文件中
- JavaScript - 语法
- JavaScript - Hello World 程序
- JavaScript - Console.log()方法
- JavaScript - 注释
- JavaScript - 变量
- JavaScript - let 语句
- JavaScript - 常量
- JavaScript - 数据类型
- JavaScript - 类型转换
- JavaScript - 严格模式
- JavaScript - 保留关键字
- JavaScript 运算符
- JavaScript - 运算符
- JavaScript - 算术运算符
- JavaScript - 比较运算符
- JavaScript - 逻辑运算符
- JavaScript - 按位运算符
- JavaScript - 赋值运算符
- JavaScript - 条件运算符
- JavaScript - typeof 运算符
- JavaScript - Nullish 合并运算符
- JavaScript - Delete 运算符
- JavaScript - 逗号运算符
- JavaScript - 分组运算符
- JavaScript - Yield 运算符
- JavaScript - Spread 运算符
- JavaScript - 幂运算符
- JavaScript - 运算符优先级
- JavaScript 控制流
- JavaScript - if...else 语句
- JavaScript - While 循环
- JavaScript - For 循环
- JavaScript - For...in 循环
- JavaScript - For...of 循环
- JavaScript - 循环控制
- JavaScript - Break 语句
- JavaScript - Continue 语句
- JavaScript - Switch Case 语句
- JavaScript - 用户定义的迭代器
- JavaScript 函数
- JavaScript - 函数
- JavaScript - 函数表达式
- JavaScript - 函数参数
- JavaScript - 默认参数
- JavaScript - Function() 构造函数
- JavaScript - 函数提升
- JavaScript - 自调用函数
- JavaScript - 箭头函数
- JavaScript - 函数调用
- JavaScript - 函数 call() 方法
- JavaScript - 函数 apply() 方法
- JavaScript - 函数 bind() 方法
- JavaScript - 闭包
- JavaScript - 变量范围
- JavaScript - 全局变量
- JavaScript - 智能函数参数
- JavaScript 对象
- JavaScript - Number 对象
- JavaScript - 布尔对象
- JavaScript - String 对象
- JavaScript - Array 对象
- JavaScript - 日期对象
- JavaScript - DataView 对象
- JavaScript - 处理程序
- JavaScript - math 对象
- JavaScript - 正则表达式
- JavaScript - Symbol 对象
- JavaScript - Set(集)对象
- JavaScript - WeakSet 对象
- JavaScript - Maps (地图) 对象
- JavaScript - WeakMap 对象
- JavaScript - Iterables 对象
- JavaScript - Reflect 对象
- JavaScript - TypedArray 对象
- JavaScript - 模板文本
- JavaScript - tagged 模板
- 面向对象的 JavaScript
- JavaScript - 对象概述
- JavaScript - 类(Classes)
- JavaScript - 对象属性
- JavaScript - 对象方法
- JavaScript - Static(静态)方法
- JavaScript - display(显示)对象
- JavaScript - 对象访问器
- JavaScript - 对象构造函数
- JavaScript - 原生原型
- JavaScript - ES5 对象方法
- JavaScript - Encapsulation(封装)
- JavaScript - Inheritance(继承)
- JavaScript - Abstraction(抽象)
- JavaScript - Polymorphism(多态性)
- JavaScript - 解构赋值
- JavaScript - 对象解构
- JavaScript - 数组解构
- JavaScript - 嵌套解构
- JavaScript - 可选链接
- JavaScript - 全局对象
- JavaScript - Mixin
- JavaScript - Proxies(代理)
- JavaScript 版本
- JavaScript - 历史
- JavaScript - 版本
- JavaScript - ES5
- JavaScript cookies
- JavaScript - Cookies
- JavaScript - Cookie 属性
- JavaScript - 删除 Cookie
- JavaScript 浏览器 BOM
- JavaScript - 浏览器对象模型
- JavaScript - Window 对象
- JavaScript - Document 对象
- JavaScript - Screen 对象
- JavaScript - History 对象
- JavaScript - navigator 对象
- JavaScript - Location 对象
- JavaScript - Console 对象
- JavaScript Web API
- JavaScript - Web API
- JavaScript - history API( 历史 API)
- JavaScript - Storage API(存储 API)
- JavaScript - Forms API(表单 API)
- JavaScript - Worker API
- JavaScript - Fetch API (获取 API)
- JavaScript - Geolocation API (地理位置 API)
- JavaScript 事件
- JavaScript - Events (事件简介)
- JavaScript - DOM 事件
- JavaScript - addEventListener()
- JavaScript - 鼠标事件
- JavaScript - 键盘事件
- JavaScript - 表单事件
- JavaScript - 窗口/文档事件
- JavaScript - 事件委派
- JavaScript - 事件冒泡
- JavaScript - 事件捕获
- JavaScript - 自定义事件
- JavaScript 错误处理
- JavaScript - 错误和异常处理
- JavaScript - try...catch 语句
- JavaScript - 调试
- JavaScript - 自定义错误
- JavaScript - 扩展错误
- JavaScript 重要关键词
- JavaScript - this 关键字
- JavaScript - void 关键字
- JavaScript - new 关键字
- JavaScript - var 关键字
- JavaScript HTML DOM
- JavaScript - 文档对象模型或 DOM
- JavaScript - DOM 方法
- JavaScript - DOM 文档
- JavaScript - DOM 元素
- JavaScript - DOM 表单
- JavaScript - 更改 HTML
- JavaScript - 更改 CSS
- JavaScript - DOM 动画
- JavaScript - DOM 导航
- JavaScript - DOM 集合
- JavaScript - DOM 节点列表
- JavaScript 杂项
- JavaScript - Ajax
- JavaScript - 异步迭代
- JavaScript - Atomics 对象 (原子对象)
- JavaScript - Rest 参数
- JavaScript - 页面重定向
- JavaScript - 对话框
- JavaScript - 页面打印
- JavaScript - 表单验证
- JavaScript - 动画
- JavaScript - 多媒体
- JavaScript - Image Map(图像映射)
- JavaScript - 浏览器兼容性
- JavaScript - JSON
- JavaScript - 多行字符串
- JavaScript - 日期格式
- JavaScript - 获取日期方法
- JavaScript - 设置日期方法
- JavaScript - 模块
- JavaScript - 动态导入
- JavaScript - BigInt 数据类型
- JavaScript - Blob
- JavaScript - Unicode
- JavaScript - 浅层复制
- JavaScript - 调用堆栈
- JavaScript - 引用类型
- JavaScript - IndexedDB
- JavaScript - 点击劫持攻击
- JavaScript - Currying (局部套用)
- JavaScript - 图形
- JavaScript - Canvas
- JavaScript - Debouncing (防抖)
- JavaScript - 性能
- JavaScript - 样式指南
- JavaScript - 内置函数
JavaScript - 常量
JavaScript 常量
JavaScript 常量(constants)是其值在整个程序执行过程中保持不变的变量。您可以使用 const 关键字声明常量。
const 关键字是在 ES6 版本的 JavaScript 中通过 let 关键字引入的。const 关键字用于定义具有常量引用的变量。使用 const 定义的变量不能重新声明、重新分配。const 声明具有块和函数范围。
JavaScript 常量声明
如果使用 const 关键字声明变量,则始终需要在声明时分配一个值。
在任何情况下,如果不进行初始化,都不能使用 const 关键字声明变量。
无法重新分配
您无法更新使用 const 关键字声明了的变量值。
const y = 20;
y = 40; // 这是不可能的
块范围
使用 const 关键字声明的 JavaScript 变量具有块范围。这意味着在 blcok 之外,相同的变量被视为不同变量。
在下面的示例中,在块中声明的 x 与在 blcok 外部声明的 x 不同。所以我们可以在区块外部 重新声明 相同变量
{
const x = "john";
}
const x = "Doe"
但是我们不能在同一个块中重新声明 const 变量 。
{
const x = "john";
const x = "Doe" // incorrect
}
JavaScript 中的常量数组和对象
我们可以使用 const 关键字声明数组和对象,但数组和对象声明中有一个小转折。
带有 const 关键字的变量保留常量引用,但不保留常量值。因此,您可以更新使用 const 关键字声明的相同数组或对象,但不能将新数组或对象的引用重新分配给常量变量。
示例(常量数组)
在下面的示例中,我们使用 const 关键字定义了名为 'arr' 的数组。之后,我们在第 0 个索引处更新数组元素,并在数组末尾插入 'fence' 字符串。
在输出中,您可以观察到它打印更新的数组。
<html>
<head>
<title> Consant Arrays </title>
</head>
<body>
<script>
// Defining the constant array
const arr = ["door", "window", "roof", "wall"];
// Updating arr[0]
arr[0] = "gate";
// Inserting an element to the array
arr.push("fence");
//arr = ["table", "chair"] // reassiging array will cause error.
// Printing the array
document.write(arr);
</script>
</body>
</html>
当您执行上述代码时,它将产生以下结果 -
示例(常量对象)
在下面的示例中,我们使用 const 关键字创建了 'obj' 对象。接下来,我们更新对象的 'animal' 属性,并在对象中插入 'legs' 属性。在输出中,代码将打印更新的对象。
<html>
<head>
<title> Constant Objects </title>
</head>
<body>
<script>
// Defining the constant object
const obj = {
animal: "Lion",
color: "Yellow",
};
// Changing animal name
obj.animal = "Tiger";
// Inserting legs property
obj.legs = 4;
// Printing the object
document.write(JSON.stringify(obj));
// obj = { name: "cow" } // This is not possible
</script>
</body>
</html>
它将产生以下结果 -
因此,我们不能更改对使用 const 关键字声明的变量(数组和对象)的引用,但会更新元素和属性。
无 const 提升
使用 const 关键字定义的变量不会提升到代码顶部。
在下面的示例中,在定义 const 变量 x 之前对其进行访问。这将导致错误。我们可以使用 try-catch 语句捕获错误。
<html>
<body>
<script>
document.write(x);
const x = 10;
</script>
</body>
</html>
以下是使用 const 关键字声明的变量的一些其他属性。
- 块范围。
- 不能在同一范围内重新声明。
- 使用 const 关键字声明的变量不能提升到代码顶部。
- 常量变量值是一个基元值。
var、let 和 const 之间的区别
我们给出了使用 var、let 和 const 关键字声明的变量之间的比较表。
比较基础 | var | let | const |
---|---|---|---|
范围 | 函数 | 块 | 块 |
悬挂 | Yes | No | No |
分配 | Yes | Yes | No |
重新声明 | Yes | No | No |
绑定此 | Yes | No | No |
你应该在 var、let 和 const 中使用哪个?
- 对于块范围,您应该使用 let 关键字。
- 如果需要将常量引用分配给任何值,请使用 const 关键字。
- 当你需要在任何特定块内定义变量时,如循环、'if 语句' 等,并且需要在块外部但在函数内部访问,你可以使用 var 关键字。
- 但是,您可以使用 any 关键字来定义全局变量。
- 重新声明变量不是一种好的做法。因此,您应该避免使用它,但如有必要,您可以使用 var 关键字。