let和const在es6中的异同点
let和const这两个都是声明一个变量或函数的方法与var差不太多的效果
let的声明在for循环中,当你定义的是多少,最后你的值就是多少开始的,它只进行一次循环,不会像var那样去一遍一遍的去遍历它
并且let在for循环中它只有在for里面才能运行,在外部获取的情况就会出错
let的特殊情况,最好不要这样定义,容易把自己玩进去,看下面的这段代码,有两个let,可以看成父子,当这样定义的话,console的值就是它的最近的上一级,父子之间不会出现互相影响的情况
let的使用也不像var那样使用那么随意,es6中明确的规定了如果在区块中存在let和const命令,这个区块对这些命令声明的变量,从一开始形成了封闭作用域,凡是在声明前使用这些变量,就会报错俗称“暂时性死区”。let特别大男子主义,谁在我前面用我的值就是不行,全给你们干掉,叫你们用。(同区域内在let前使用它的值,全都会报错)所以为了良好的编程习惯,大家都用把变量声明完后在使用。出错的话就要自己慢慢找bug了
let不能在同作用域内重复声明这个值,并且不能在函数内部重新去声明这个参数
const命令
const声明一个只读的常量,一旦声明,这个常量就不能改变,只要改变就会出错
coust命令也是在块级作用域内有效
一样常量不能提升,存在暂时性死区
一样存在不能重复声明
const保证的不是变量不能改动,而是指不能改变变量的指向,从下面的例子就能看出,变量值能够随意的改变,但是一旦把他的指向发生变化,那就报错了。
如果定义完后不想让他改变里面的值的时候,这就需要把他的值给冻结一下才行,用下面的代码
let和const有很多的相同点总结下
1.在块级作用域下才能使用
2.常量不能提升,存在暂时性死区
3.一样不能重复声明
不同点:
1.const声明出来的是只读属性,不能随便改动,只能改变指向里面的值,let声明的值在同作用域下能够进行改动
2.const不存在父子属性,let能够在父子属性中存活
3.const不存在for循环着种操作
let和const在es6中的异同点的更多相关文章
- es6中的变量声明
目录 es6中的变量声明 变量的声明 es6中的变量声明 变量的声明 for (var i = 0; i < 5; i++) { console.log(i) } var声明 作用域问题 上面的 ...
- ES6中的var let const应如何选择
javascript世界里面的每个人都在说有关ECMAScript 6 (ES6,也称作ES 2015)的话题,对象的巨大变化 ( 类 , super() , 等), 函数 (默认参数等), 以及模块 ...
- ES6中声明变量 let和const特点
在ES6中我们有两种定义变量的方式:let const let特点: 1.let定义时不会进行变量声明提升 2.变量不允许被重复定义 3.变量不可以被删除 4.在for循环当中用let定义i 循 ...
- es6中let,const区别与其用法
ECMAScript 是什么? 首先,我们都知道JavaScript由三部分组成:ECMAScript,DOM,BOM: 其中的ECMAScript是Javascript的语法规范. ECMAScri ...
- es6 中的let,const
在es6中,let的作用和var差不多,都是用来声明变量的,但是他们之间的区别在于作用域不同,大家都知道在js中没有块级作用域,例如: for(var i=0;i<10;i++){ consol ...
- 关于var和ES6中的let,const的理解
var的作用就不多说了,下面说说var的缺点: 1.var可以重复声明 var a = 1; var a = 5; console.log(a); //5 不会报错 在像这些这些严谨的语言来说,一般是 ...
- JavaScript学习系列5 ---ES6中的var, let 和const
我们都知道JavaScript中的var,在本系列的 JavaScript学习系列2一JavaScript中的变量作用域 中,我们详细阐述了var声明的变量的作用域 文章中提到,JavaScript中 ...
- ES6 中 let 和 const 总结
目录 let const 1. let要好好用 1. 基本用法 2. let声明的变量不存在变量提升 3. TDZ(temporal dead zone)暂时性死区 4. 不允许重复声明 2. 块级作 ...
- 现代JavaScript—ES6+中的Imports,Exports,Let,Const和Promise
转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者.原文出处:https://www.freecodecamp.org/news/learn-modern-jav ...
随机推荐
- Django 04 模板标签(if、for、url、with、autoeacape、模板继承于引用、静态文件加载)
Django 04 模板标签(if.for.url.with.autoeacape.模板继承于引用.静态文件加载) 一.if.for.url.with.autoescape urlpatterns = ...
- 获取Spring应用环境上下文bean
import org.springframework.beans.BeansException; import org.springframework.beans.factory.NoSuchBean ...
- c++的直接初始化与复制初始化 未完成!!!!!!!!!!!!
直接初始化:是直接调用类的构造函数进行初始化.如下: string a;//调用默认构造函数 string a("hello");//调用参数为 const char* 类型的构造 ...
- D. Little Artem and Dance
题目链接:http://codeforces.com/problemset/problem/669/D D. Little Artem and Dance time limit per test 2 ...
- POI 读取Excel数据
private List<LeagueGroup> read() throws IOException{ List<LeagueGroup> leagueGroups=new ...
- SQL判断经纬度在矩形内
1,将城市地图拆分等距拆分为矩形 数据结构如图: 2.查看高德JS API (点是否在多边形内)核心代码: a=[114.069564,22.545774]; b=[ [114.067595,22.5 ...
- Maven的学习资料收集--(十)Myeclipse下创建Maven的Web项目
先要在MyEclipse中对Maven进行设置: 到此Maven对MyEclipse的支持设置完毕. 下面我们在MyEclipse中创建一个Maven标准的Web工程: New --> We ...
- ACdream 1427—— Nice Sequence——————【线段树单点更新,区间查询】
Nice Sequence Time Limit: 4000/2000MS (Java/Others) Memory Limit: 128000/64000KB (Java/Others) Su ...
- 进程的基础理论、并发(multiprocessing模块)
一.粘包优化方案 之前我们解决粘包的方式是用struct模块来制作一个报头,但是这个解决的方案是有漏洞的,当我们需要传送的文件大于2g时将会报错.所以我们今天将用json来制作报头. from soc ...
- Vue2.0搭建脚手架(vue-cli)
一.安装node.js 进入官网下载node.js 二.安装 cnpm 1.说明:npm(node package manager)是nodejs的包管理器,用于node插件管理(包括安装.卸载.管理 ...