此系列文章用于记录小萌新的ES6的学习经历如有什么错误或者不好的地方请各位大佬多多指教
在ES5中只有var关键字来定义变量,ES6新增了两个关键字let和count对变量进行声明,
并且在ES5中作用域方面不支持块级作用域。而ES6添加这两个关键字就是为了划分块级作用域
ES6 新增了 let 命令,用于声明变量。其用法类似于 var ,但是所声明的变量只在 let命令所在的代码块内有效。
代码如下(示例):
{
let a = 10;
var b = 1;
}
console.log(b); // 1
console.log(a); // ReferenceError: a is not defined
上面的代码在let声明的块作用域外进行使用会报错, 而var返回了正确的值,所以let只能在所定义的块作用域里面进行使用
注意:
代码如下(示例):
{
var b = 5;
var b = 1;
console.log(b); // 1
}
{
let a = 10;
let a = 1;
console.log(a); // SyntaxError: Identifier 'a' has already been declared
}
上面的代码var声明的变量可以重新定义覆盖,而let不能重新定义相同名字的变量。
在js中var定义变量时,会出现变量提升的现象即在定义变量之前进行使用会显示var为undefined并不会报错。而let所定义的变量则没有变量提升的问题。
代码如下(示例):
console.log(b); // undefined
var b = 1;
console.log(a); // ReferenceError: a is not defined
let a = 10;
S6明确规定,如果区块中存在let和const命令,则这个区块对这些命令声明的变量从一开始就形成封闭作用域。
在代码块内,使用let命令声明变量之前,该变量都是不可用的,这个区域被称为“暂时性死区”。
{
var temp = 123;
if (true) {
console.log(temp); //ReferenceError: Cannot access 'temp' before initialization
let temp;
}
}
声明一个只读的常量,一旦声明,其值不能改变且必须立即初始化。
除此之外,与let用法一致。
在下面这种情况当常量保存的不是一个值,而是一个地址的时候,该常量所引用的对象是可以更改成员的,只是不能更改该常量保存的地址。
{
const foo={y:10};
foo.x=100;
console.log(foo.x);
foo={n:1000};
}
本文转载自微信公众号「三太子敖丙」,作者三太子敖丙。转载本文请联系三太子敖...
端点路由(Endpoint Routing)最早出现在ASP.NET Core2.2,在ASP.NET Core3.0提升...
博主最近在做一个个人的博客网站,准备用 thymeleaf 实现一个动态加载一二级文章...
通过ImageMagickObject的identify获取图片的信息,在命令行下好用,但是放到程序...
详解JSP中使用过滤器进行内容编码的解决办法 问题 当通过JSP页面,向数据库中插...
目录中出现 jsconfig.json 文件表明该目录是 JavaScript 项目的根目录。 Json 文...
一、GIF图 二、前台代码 // 调用方法 hotlineLine(); // 定时刷新 setInterval(f...
为什么我们需要它 不得不说,在知道这个命令的时,以及之后的使用中,我都超级热...
MySQL的binlog相信大家都有所耳闻,但是可能没有真正日常使用过。 因此,本文结...
前言 静态文件(如 HTML、CSS、图像和 JavaScript)等是Web程序的重要组成部分。...