好看的网站颜色,公司网址注册一般需要多少钱,浙江建设信用网,企业标准化体系建设流程目录 ECMAScript 6简介
let和const命名
let基本用法-块级作用域
不存在变量提升
不允许重复声明
暂时性死区
为什么需要块级作用域#xff1f;
原因一#xff1a;内层变量可能会覆盖外层变量
原因二#xff1a;用来计数的循环遍历泄露为全局变量
const基本用法-声明…
目录 ECMAScript 6简介
let和const命名
let基本用法-块级作用域
不存在变量提升
不允许重复声明
暂时性死区
为什么需要块级作用域
原因一内层变量可能会覆盖外层变量
原因二用来计数的循环遍历泄露为全局变量
const基本用法-声明只读的常量
与let命令相同点
let和const使用建议 ECMAScript 6简介
ECMAScript 6.0以下简称 ES6是 JavaScript 语言的下一代标准已经在 2015 年 6 月正式发布了。它的目标是使得 JavaScript 语言可以用来编写复杂的大型应用程序成为企业级开发语言。
let和const命名
let基本用法-块级作用域
在es6中可以使用let声明变量用法类似于var ⚠️ let声明的变量只在let命令所在的代码块内有效 复制代码
{ let a 10; var b 20; } console.log(a); //a is not defined console.log(b); //20
不存在变量提升
var命令会发生变量提升现象即变量可以在声明之前使用值为undefined。这种现象多多少少是有些奇怪的按照一般的逻辑变量应该在声明语句之后才可以使用。
为了纠正这种现象let命令改变了语法行为它所声明的变量一定在声明后使用否则报错 复制代码
//var的情况 console.log(c);//输出undefined var c 30; //let的情况 console.log(c);// 报错ReferenceError let c 30;
不允许重复声明
let不允许在相同作用域内重复声明同一个变量 复制代码
let c 10; let c 30; console.log(c); //报错 function func(arg) { let arg; // 报错 }
暂时性死区
了解的一个名词说的就是let和const命令声明变量的特征。
在代码块内使用let命令声明变量之前该变量都是不可用的。这在语法上称为暂时性死区(temporal dead zone简称 TDZ)
为什么需要块级作用域
原因一内层变量可能会覆盖外层变量 复制代码
function foo(a){ console.log(a); if(12){ var a hello 小马哥; } } var a 10; foo(a);
原因二用来计数的循环遍历泄露为全局变量 复制代码
var arr [] for(var i 0; i 10; i){ arr[i] function(){ return i; } } console.log(arr[5]());
变量i只用来控制循环但是循环结束后它并没有消失用于变量提升泄露成了全局变量。
解决循环计数问题 复制代码
//解决方式一使用闭包 var arr [] for(var i 0; i 10; i){ arr[i] (function(n){ return function(){ return n; } })(i) } //解决方式二使用let声明i var arr [] for(let i 0; i 10; i){ arr[i] function () { return i; } }
const基本用法-声明只读的常量
这意味着const一旦声明变量就必须立即初始化不能留到以后赋值。对于const来说只声明不赋值就会报错。 复制代码
const a 10; a 20;//报错 const b; //报错
与let命令相同点
块级作用域暂时性死区不可重复声明
let和const使用建议 在默认情况下用const,而只有你在知道变量值需要被修改的情况下使用let 转载出处阮一峰的ES6文档