ES6之let和const

1、在ES5中我们定义一个变量是通过 var 关键字来定义的。如:var name = ‘zjl‘    var obj = {name:‘zjl‘,age:‘18‘}

2、在ES6中新引进了两个定义变量的关键字 let 和 const。

3、ES6之 let:

let 的用法和 var 很类似,但它存在自己的特性 主要有以下几点:

  • let 所声明的变量,只在 let 命令所在的代码块内有效
{
  let a = 10;
  var b = 1;
}
console.log(a,b);

以上的打印会报错:ReferenceError: a is not defined   显示 a 未定义

  • 不存在变量提升
console.log(bar); // 报错ReferenceError
let bar = 2;
  • 暂时性死区:在代码块内,使用let命令声明变量之前,该变量都是不可用的
var tmp = 123;
if (true) {
tmp = ‘abc‘; // ReferenceError
let tmp;
} 
  • 不允许重复声明
function test() {
    let a = 10;
    let a = 1;
}
test()
// 会报错

4、ES6之const关键字,与let相比多了以下两个特性(与let相同的特性这里不再赘述)

  • 变量一旦声明就必须赋值  const a; //会报错
  • const声明一个变量是只读的,不能对他进行修改  const a=1;  a=2; //会报错

原文地址:https://www.cnblogs.com/zjl-712/p/11415708.html

时间: 2024-08-01 00:04:38

ES6之let和const的相关文章

es6学习 -- let和const

在es6中let和const声明的变量都只能在其声明的块级作用域中使用,所谓的块级作用域就是{}这么一对大括号. 为什么需要块级作用域? ES5 只有全局作用域和函数作用域,没有块级作用域,这带来很多不合理的场景. 第一种场景,内层变量可能会覆盖外层变量. var tmp = new Date(); function f() { console.log(tmp); if (false) { var tmp = 'hello world'; } } f(); // undefined 上面代码的原

ES6入门-let和const指令

LET: 基本用法:在javascript中声明一个变量通常使用var ,在es6中新增了let指令,用法类似var ,但是let声明的变量只能在所在的代码块有效. ??  使用let声明变量要注意一下几个点: 1,let指令不存在变量提升,所以变量一定要先声明后再使用,否则就会报错. console.info(info); //ReferenceError let info; 2, 存在暂时性死区,也就是说,只要一个块级作用域中使用let声明了某个变量,那么这个变量就被绑定在这个区块了.外界对

es6(一):es6介绍以及let,const

es是js的规范,而js是具体实现 将es6转化为es5代码工具:运用的多的是babel 在线转换地址:babel,traceur(属于谷歌) 1.let申明变量:let其实可以完全取代var,并且没有var这么多副作用 1 { 2 var a = 10; 3 let b = 10;//let申明的变量是块级作用域 4 } 5 console.log(a)//10 6 // console.log(b)//b is not defined let很适合的一种场景是:for 1 for (let

es6基础学习二 const

es5是没用常量声明这个选项,es6将其添加其中. 1.基本用法 const 声明一个只读常量.一旦申明,常量的值就不能改变. const PI = 3.1415; PI = 3; //SyntaxError const 声明的变量,一旦声明必须初始化(即赋值),否则报错. const foo; // syntaxError 除此之外,const的声明常量类似let声明的变量: a> 不存在变量提升 b> 只在声明所在的块级作用域内有效 c> 不能重复用var.let.const声明 e

关于ES6的let,const与var之间的三生三世

首先需要明确的是let.const.var都是用来定义变量的 在ES6之前,我们一般都用var来定义变量,例如 : function test(){ var i=1; console.log(i); console.log(j); var j=2; } test(); console.log(i); 在上面的代码中,我们可以预计到第一个console输出的是1,第二个由于变量提升输出的是undefine,而不是产生ReferenceError错误,第三个输出的还是1:也就是说在函数中定义的一个变

JavaScript ES6 的let和const

1 作用域和提升 1.1 作用域(Scope) 某个变量名或者函数名,在某个程序片段中是否可见或者可访问,如果是,那么这个程序片段就是这个变量名或者函数名的作用域.比如: 1 var name = "Tom"; 2 function getInlibrary(){ 3 var libraryName = "Xinhua"; 4 console.log(name ); 5 console.log(libraryName ); 6 } 7 8 getInlibrary(

es6的let 和const命令

1.不存在变量提升,即变量不可以在声明之前使用,否者会报错(值为undefined). 2.ES6 明确规定,如果区块中存在let和const命令,这个区块对这些命令声明的变量,从一开始就形成了封闭作用域.凡是在声明之前就使用这些变量,就会报错. 3.不允许重复声明. 4.let和const为js新增了块级作用域.(function({}())); 5.const定义常量,对于复合类型的数据(主要是对象和数组),变量指向的内存地址,保存的只是一个指针. 原文地址:https://www.cnbl

es6(var,let,const,set,map,Array.from())

1.变量声明--var,const,let 1.1 var - (全局作用域,局部作用域)会有变量提升 //第一个小例子 <script> var num = 123; function fn(){ console.log(num); // undefined var num = 46; console.log(num) // 46 } fn() </script> //为什么第一个输出值会是undefined,而不是123呢?因为这里存在着变量名的提升,其实上述语句相当于: &l

ES6中let与const命令详解

阮一峰ES6入门 let 作用域 let命令用来声明变量,但声明的变量只在let命令所在的代码块内有效. { let a = 10; var b = 1; } a // ReferenceError: a is not defined. b // 1 for循环 上图代码中i是var声明的,在全局范围内部有效,所以全局只有一个变量i. 每一次循环,变量i的值都会发生改变,而循环内被赋给数组a的函数内部的console.log(i),里面的i指向的就是全局的i. 也就是说数组a的成员里面的i,指向

ES6 之 let和const、块级作用域

let let 声明的变量只在其所在的代码块内有用 不存在变量提升 只要在会计作用域中存在let命令,它所声明的变量就绑定这个区域 不允许重复声明 ES6块级作用域 外层代码不受内存代码块的影响 ES6规定,在块级作用域之中,函数声明类似于let 允许在块级作用域内声明函数 函数声明会提升到所在块级作用域的头部 const const声明一个只读常量,一旦声明,常量的值就不能改变 只在声明所在的块级作用域内有效 const声明的常量与let命令相同,只在声明所在的块级作用域内有效 const不存