ES6—— let 和 const 命令
本文主要讲解ES6中变量的相关操作,变量的命名, 讲解 var、 let 、 const 三者的区别
ES6中的 let 和 const 都是用来声明变量的, 他们与 var 有所区别
我们都知道在forhtml" target="_blank">循环中,我们命名的变量 i 一般都只是为了在这个循环中使用,才临时命名的, 我们希望循环结束后,这个变量就消失, 但是却相反,用 var 命名的变量,在 for 循环结束后并不会销毁,而会存在于全局中。
for(var i=0; i<5; i++) { console.log('循环'+ i) } console.log(i)
/* 输出结果 */
循环1
循环2
循环3
循环4
5 // 这里是循环外输出的i
但是如果我们在 for 循环中,用到 let 去命名变量会怎么样呢?
for(let i=0; i<5; i++) { console.log('循环'+ i) } console.log(i)
/* 输出结果 */
循环1
循环2
循环3
循环4
undefined // 这里是循环外输出的i,显示未定义
这样的话就解决了因为 var 命名导致的变量泄露的问题了, 其实它的本质就是作用域, let 只作用于他自身所在的代码块内,而 var 是针对全局都有效的。例如这一个简单的例子:
{ let i = 1 var n = 2 } console.log(i) console.log(n)
/* 输出结果 */
undefined
2
可以看到, let 命名的变量只存在于那个代码块内,到外部就访问不到了,而 var 就是针对全局命名的。
const 和 let 类似,也是命名的变量只能在它所在的代码块内能被访问得到,到外部就无法被访问到,但是 const 与 let 的区别就在于, const 命名的变量是一个只读变量,简而言之就是命名了就无法在后面被修改,例如这个例子:
const a = 'apple' let b = 'orange' a = 'watermelon' b = 'banana'
/* 输出结果 */
a = 'watermelon'
^
显而易见, 系统会直接报错, 因为 const 命名的变量 a 是无法改变的, 后续无法对其进行赋值。
其实 const 命名变量以后, 也不是说就真的无法改变了, 因为const命名时其实是把箭头指向了内存中的一个对象, 只要不改变这个对象地址, const 命名的变量还是可以变化的,例如:
const list1 = [] list1.push('变化1') console.log(list1) // ['变化1']
可以看到 list1.pish(' 变化1 ') 不会改变 变量 list1在内存中的地址。
但是 list1 = [ '变化1' ] 就会改变 list1 在内存中的地址,所以会报错
const list1 = [] list1 = ['变化1'] console.log(list1) // 报错:list1 = ['变化1'] ^
这就是 let 和 const 的简单应用,希望对大家有所帮助, 下一篇ES6(2)将讲解变量的解构赋值
到此这篇关于JavaScript中ES6规范中let和const的用法和区别的文章就介绍到这了,更多相关JavaScript中let和const用法区别内容请搜索小牛知识库以前的文章或继续浏览下面的相关文章希望大家以后多多支持小牛知识库!
本文向大家介绍ES6中let 和 const 的新特性,包括了ES6中let 和 const 的新特性的使用技巧和注意事项,需要的朋友参考一下 在javascript中,我们都知道使用var来声明变量。javascript是函数级作用域,函数内可以访问函数外的变量,函数外不能访问函数内的变量。本文给大家介绍ES6中let 和 const 的特性,具体内容如下所示: let的特性: 1.不存在变量提
问题内容: 我不知道是什么样的区别,并在 ES6 。两者都是块作用域的,如以下代码中的示例所示: 在ES5中,输出为: 但是在ES6中它将是: 我想知道为什么 ES6 允许更改值,问题是为什么我们现在应该使用’const’?我们可以用“ let”代替吗? 注意 :jsbin可以用于测试,选择 JavaScript 运行 ES5 代码,并选择 Traceur 使用 ES6 功能运行它。 问题答案:
本文向大家介绍let和const的区别是什么相关面试题,主要包含被问及let和const的区别是什么时的应答技巧和注意事项,需要的朋友参考一下 let和const都是es6引入的新的关键字,let主要解决的是var变量提升导致的全局变量污染问题,let是块级作用域,var是函数作用域,const和let功能一样只是多了一个不可更改的修饰,项目中我们应该多使用const,避免使用var。
问题内容: 在学习电子时,我发现了两种获取BrowserWindow对象的方法。 和 和之间有什么区别? 我不明白为什么可以使用。我是否想念有关JS的重要信息? 问题答案: 这两段代码是等效的,但是第一段代码使用的ES6分解分配要短一些。 这是一个如何工作的简单示例:
本文向大家介绍深入浅出ES6之let和const命令,包括了深入浅出ES6之let和const命令的使用技巧和注意事项,需要的朋友参考一下 let和const声明的变量只在代码块内有效 不存在变量提升 变量一定要在声明后使用,否则报错 不允许重复声明 块级作用域 const命令 声明一个只读的常量,一旦声明,常量的值就不能改变 一旦声明变量,就必须立即初始化,不能留到以后赋值 let命令、cons
let命令 基本用法 ES6新增了let命令,用来声明变量。它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效。 { let a = 10; var b = 1; } a // ReferenceError: a is not defined. b // 1 上面代码在代码块之中,分别用let和var声明了两个变量。然后在代码块之外调用这两个变量,结果let声明的
问题内容: 我玩ES6已有一段时间了,我注意到虽然用声明的变量被按预期悬挂了… …声明或似乎存在一些问题的变量: 和 这是否意味着使用或不声明的变量被吊起?这到底是怎么回事?是否有任何区别,并在此问题? 问题答案: @thefourtheye的正确说法是在声明这些变量之前 无法访问 它们。但是,这要复杂得多。 是否用或不声明变量?这到底是怎么回事? 所有声明 (,,,,,) 被“悬挂” 在Java
本文向大家介绍ES6新特性一: let和const命令详解,包括了ES6新特性一: let和const命令详解的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了ES6新特性中的let和const命令。分享给大家供大家参考,具体如下: 1. let 命令 ① 在js中是没有块级作用域的,var 声明的变量作用域是整个函数体,而let可以起到这一作用 ② 而let可以起到这一作用啊在js中变量和