【ES6】var、let、const三者的区别
2024-09-03 09:55:33
首先,一个常见的问题是,ECMAScript 和 JavaScript 到底是什么关系?
ECMAScript是一个国际通过的标准化脚本语言。JavaScript由ECMAScript和DOM、BOM三者组成。可以简单理解为:ECMAScript是JavaScript的语言规范,JavaScript是ECMAScript的实现和扩展。
2011 年,ECMAScript 5.1 版发布。之前我们大部分人用的也就是ES5
2015 年 6 月,ECMAScript 6 正式通过,成为国际标准。
1. 块级作用域 {}
ES5 中作用域有:全局作用域、函数作用域。没有块作用域的概念。
ES6 中新增了块级作用域。块作用域由 { } 包括,if语句和 for语句里面的{ }也属于块作用域。
<script type="text/javascript"> {
var a = 1;
console.log(a); //
}
console.log(a); //
// 通过var定义的变量可以跨块作用域访问到。 (function A() {
var b = 2;
console.log(b); //
})();
// console.log(b); // 报错,
// 可见,通过var定义的变量不能跨函数作用域访问到 if(true) {
var c = 3;
}
console.log(c); //
for(var i = 0; i < 4; i ++) {
var d = 5;
};
console.log(i); // 4 (循环结束i已经是4,所以此处i为4)
console.log(d); //
// if语句和for语句中用var定义的变量可以在外面访问到,
// 可见,if语句和for语句属于块作用域,不属于函数作用域。 </script>
2. var、let、const的区别
- var定义的变量,没有块的概念,可以跨块访问, 不能跨函数访问。
- let定义的变量,只能在块作用域里访问,不能跨块访问,也不能跨函数访问。
- const用来定义常量,使用时必须初始化(即必须赋值),只能在块作用域里访问,而且不能修改。
<script type="text/javascript">
// 块作用域
{
var a = 1;
let b = 2;
const c = 3;
// c = 4; // 报错
var aa;
let bb;
// const cc; // 报错
console.log(a); //
console.log(b); //
console.log(c); //
console.log(aa); // undefined
console.log(bb); // undefined
}
console.log(a); //
// console.log(b); // 报错
// console.log(c); // 报错 // 函数作用域
(function A() {
var d = 5;
let e = 6;
const f = 7;
console.log(d); //
console.log(e); // 6
console.log(f); // 7 })();
// console.log(d); // 报错
// console.log(e); // 报错
// console.log(f); // 报错
</script>
最新文章
- laravel administrator 一款通用的后台插件(PHP框架扩展)
- 实验三 敏捷开发与XP实践
- WinForm------分页控件dll下载地址
- 转载_虚拟机下LInux(终端)配置网络的方法
- error MSB6006: &ldquo;cmd.exe&rdquo;已退出,代码为 3。
- docker基本概念,创建、起动实例,保存自定义镜像等常用操作
- 【转载】C#后台声明式验证,远离if验证
- hadoop2.2编程: Interation
- Xamarin Android自定义文本框
- Java | 原来 try 还可以这样用啊?!
- ORACLE跨数据库查询的方法
- mysql数据表的基本操作
- Eclipse中修改jsp、html……的编码格式
- js判断用户的浏览器
- TNS:listener does not currently know of service requested in connect descriptor错误改正
- 从概率图模型pgm到rbm
- 安装配置fastDFS文件服务器 - Linux
- 装了appserv之后,浏览器中访问localhost加载不了
- hdu-1892-二维BIT
- Banner中文字怎么排版才好看?
热门文章
- Backup--如何快速截断日志
- IdentityServer4与ocelot实现认证与客户端统一入口
- OCP换考题了,052新考题及答案整理-第17题
- TCP/IP学习笔记(2)-数据链路层
- [ActionScript 3.0] 利用InteractivePNG.as类精确选择识别png图片有像素的区域
- Jupyter Notebook远程服务器配置[转]
- 在通知栏上玩游戏,Steve iOS 游戏实现思路
- scrapy连接MongoDB
- [inside hotspot] 汇编模板解释器(Template Interpreter)和字节码执行
- 通过Maven简单搭建SSM框架