JavaScript 关键字let和const
2022/7/12 14:24:27
本文主要是介绍JavaScript 关键字let和const,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
JavaScript 关键字let和const
看 JS 的时候,总感觉这个 JS 有那个大病,说话口齿不清,用起来也莫名其妙的,于是决定记一下。
关键字 let
首先从 ES6 引入的定义关键字 let 和 const 开始,在这之前,必须提一下没有 let 和 const 之前的 var 关键字。
在 ES6 之前,JavaScript 只有两种作用域:全局变量与函数内的局部变量:
// var 定义全局变量 文件内有效 var id = "qiyuanc"; function getName(){ // 逆天之处 在函数内直接定义的变量 为全局变量 // name = "祈鸢"; // var 定义局部变量 函数内有效 var name = "祈鸢"; return name; }
ES6 带来了 let 关键字和块级作用域的概念,因此 let 和 var 的区别就很关键了:
var id = "qy"; let name = "祈鸢"; { // id 被重新定义 var id = "qiyuanc"; // name 没有重新定义 在本块级作用域中 name = "?" let name = "?"; } // 此处 id = "qiyuanc" // 此处 name = "祈鸢"
let 声明的变量只在 let 命令所在的代码块 { } 内有效,在 { } 之外不能访问。
for 循环的条件也属于代码块,因此在 for 循环中使用 let 定义变量,可以达到与 Java 中 for 循环里定义的变量一样的作用域效果。
// 之前使用 var var i = 5; for (var i = 0; i < 10; i++) { // TODO... } // 此处 i 为 10 // 现在使用 let let i = 5; for (let i = 0; i < 10; i++) { // TODO... } // 此处 i 为 5
除了在块级作用域和循环条件中,var 与 let 还在以下场景有区别(可能还有别的):
- HTML 中定义变量:var 定义的对象属于 window(能通过 window. 访问),而 let 定义的对象则不属于 window(不能通过 window. 访问);
- 重置变量:使用 var 定义的变量在任何地方都可以被 var 重置,而使用 let 定义的变量在相同的作用域中,不能被任何方式重置(可以理解为不能重定义),但在不同的作用域中 let 是可以定义多个相同变量的;
- 变量提升:使用 var 定义的变量可以在定义前使用,而使用 let 定义的变量则不能在定义前使用。
稍微总结一下:比起 var 来说 let 更加严格,更加符合 Java 的编程方式,对我比较友好。
关键字 const
这个 const 关键字就是比较有病的东西了。
首先它和众多语言中的 const 一样,用于定义常量,即定义后不能修改的数据:
const owner = "qiyuanc"; owner = "lz"; // 错 const PI; PI = 3.1415926535; // 错
使用 const 定义的常量与使用 let 定义的变量类似:
- 作用域都是块级,且在相同的作用域内不能重复定义;
- 在重置变量和变量提升上,与 let 也相同。
而 const 作为常量,与 let 的不同之处为:
- const 定义常量必须初始化,而 let 定义变量不用;
- 变量可以修改而常量不行(什么基础)。
但是,JS 里的这个 const 定义的并非严格意义上的常量,表现在使用 const 定义对象(Array、Map 等也算)时,对象的内容是可变的:
// 创建常量对象 const user = {id:"Qiyuanc", name:"祈鸢", pwd:"123456"}; // 修改属性 user.pwd = "lzlzlz"; // 添加属性 user.money = 9999; // 但是不能重新辅赋值 错 ↓ user = {id:"Qiyuanb", name:"qyb", pwd:"123456"};
对于数组等而言也是这样:
// 创建常量数组 const users = ["Irror", "Qiyuanc", "Inory"]; // 修改元素 users[0] = "Irror111"; // 添加元素 users.push("Mashiro");
总之,JS 里的特性和语法都是有够奇怪的。
这篇关于JavaScript 关键字let和const的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-09“2024鸿蒙零基础快速实战-仿抖音App开发(ArkTS版)”实战课程已上线
- 2024-05-09聊聊如何通过arthas-tunnel-server来远程管理所有需要arthas监控的应用
- 2024-05-09log4j2这么配就对了
- 2024-05-09nginx修改Content-Type
- 2024-05-09Redis多数据源,看这篇就够了
- 2024-05-09Google Chrome驱动程序 124.0.6367.62(正式版本)去哪下载?
- 2024-05-09有没有大佬知道这种数据应该怎么抓取呀?
- 2024-05-09这种运行结果里的10.100000001,怎么能最快改成10.1?
- 2024-05-09企业src漏洞挖掘-有意思的命令执行
- 2024-05-08阿里云域名注册流程,分享给第一次购买域名的新手站长!