博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ES6初探,变量的声明
阅读量:6691 次
发布时间:2019-06-25

本文共 1590 字,大约阅读时间需要 5 分钟。

JS中关于变量的声明、大家首先想到的肯定是var

1 var mytest = "hello world"

对于上面这样的声明相信大家已经见得太多了

 

那么今天博主骑着自己的宝马自行车就为了早点分享带大家了解的就是ES6声明变量的几种新方式:

1.let

2.const

 

那么今天我们先来说说第一种、let

 

let声明变量、他的用法和var类似

但是声明出来的变量只在它所在的块作用域有效

 

1 {2     var test1 = "hello world";3     let test2 = "hello world";4 }5 console.log(test1);//hello world6 console.log(test2);//Uncaught ReferenceError: test2 is not defined

 

上面声明的两个变量是用var 和 let

可以看出let声明的变量只在块作用域中起了效果、出了作用域就找不到let声明的变量了

再来看一段代码

 

1 for (var i = 0; i < 10; i++) {}2 console.log(i);//103 4 for (let j= 0;j < 10;j++) {}5 console.log(j);//Uncaught ReferenceError: j is not defined

 

用var生成的变量会依然存在的、但是用let声明的变量作用域之外是找不到的

也就是说明let只会在自己的代码块作用域内有效、

有时候我们如果用var声明变量会无意之间占用一些内存,损耗性能

 

 

再说到“变量提升”的问题(我理解这个词就认为他归到闭包的一类问题)

1 console.log(mytest1); // undefined2 console.log(mytest2); // Uncaught ReferenceError: bar is not defined3 4 var mytest1 = 2;5 let mytest2 = 2;

undefined和not defined 的区别大家都还清楚吗?

没清楚也没关系、我在这里再为大家解释一下

undefined是察觉有这个变量但是还没有赋值(因为我们的赋值语句在打印的下方)

not defined 是察觉压根都没有定义这个变量

所以let并不会发生"变量提升"

 

好了到这里先吃个明星虾

 

 

let还有这样一个特性:暂时性死区

1 var temp = 123;2 3 if (true) {4   temp = 'abc'; // Uncaught ReferenceError: temp is not defined5   let temp;6 }

 

ES6明确规定,如果区块中存在letconst命令,这个区块对这些命令声明的变量,从一开始就形成了封闭作用域。凡是在声明之前就使用这些变量,就会报错。

 

如果我们看到了这一特性、发现如果这样的话、typeof也是会报错的

1 typeof x; //Uncaught ReferenceError: x not defined
2 let x;

 

还有let的最后一个特性

let不允许在相同作用域内,重复声明同一个变量。

1 var b =4;2 var b= 5;3 console.log(b);//54 5 let a =4;6 let a= 5;7 console.log(a);//Uncaught SyntaxError: Identifier 'a' has already been declared

 

 

好了,对于let的一些特性和用法就先说这么多、老板又催我干活啦

转载于:https://www.cnblogs.com/webxiaojian/p/5580436.html

你可能感兴趣的文章
Silverlight已支持Linux,Moonlight 1.0正式版发布(附下载地址)
查看>>
Android API 中文 (53) —— BaseAdapter
查看>>
VMware安装失败 “Failed to create the requested registry key Key:installer Error:1021"
查看>>
新瓶旧酒ASP.NET AJAX(5) - 客户端脚本编程(Sys.UI命名空间下的类和快捷方法)
查看>>
apt成熟度模型
查看>>
SQL Server 2014 日志传送部署(7):日志传送故障转移和删除日志传送
查看>>
SQL Server 2014(正式发行版)安装指南
查看>>
Unix下的nfs渗透技术
查看>>
SQL Server 2016 配置链接服务器及数据还原
查看>>
细分市场能否改变IM软件寡头统治的现状?
查看>>
通过jquery做密码框的显示和隐藏效果
查看>>
Hadoop Map-Reduce的压缩最终输出文件
查看>>
译码阻塞和死锁的等待资源
查看>>
电脑必用驱动大全
查看>>
用Python实现随机验证码
查看>>
Linux网络IP配置
查看>>
用vbscript也可以刷网站
查看>>
运维自动化之 Cobbler 系统安装使用详解
查看>>
web开发敏捷之道2nd-rails进行web开发-笔记(全)
查看>>
使用Facility:EnterpriseLibrary整合进Castle
查看>>