ES6系列,1.新增let和const命令

由于ES5只有全局作用域和函数作用域,因此ES6增加块级作用域。
  let用于定义变量,块级作用域,for循环建议使用let;
  let会引起变量提升,必须先声明,在调用;
  let声明的变量,不允许重复声明;
  let实际是创建了块级作用域,可以变成do表达式
    例:let x = do {
      let t = f();
      t * t + 1;
    };
  上面代码中,变量x会得到整个块级作用域的返回值。
  const变量定义常量,一旦定义,不可以修改;
  const一旦声明变量,就必须立即初始化,不能留到以后赋值;
  const的作用域与let命令相同:只在声明所在的块级作用域内有效;
  const本质上保证的是保存的地址不可改动,内容是可以变化的;
    例:const foo = {};
    // 为 foo 添加一个属性,可以成功
    foo.prop = 123;
    foo.prop // 123
    // 将 foo 指向另一个对象,就会报错
    foo = {}; // TypeError: "foo" is read-only
  暂时性死区:
    let和const都会存在,一旦声明,必须在声明之后使用,否则报错。

  到现在ES6一共有六种声明变量的方法:
    var、function、let、const四种
    和以后新增的import和class共六种。
   同时,之前顶层对象的属性赋值与全局变量的赋值,是同一件事:
    var a = 3 与 window.a = 3 是一致的
    这点一直是js一大败笔之一,ES6为了改变这一点,一方面规定,var和function依旧
    是全局变量,顶层属性;另一方面规定,let命令、const命令、class命令声明的全局
    变量,不属于顶层对象的属性。
    let b = 1;
    window.b //undefined

时间: 2024-10-16 04:12:32

ES6系列,1.新增let和const命令的相关文章

ES6标准学习: 1、let 与 const 命令

1.let命令 一.基本用法 首先看下面一段代码: var a = [] for (var i = 0; i < 10; i++) { a[i] = function () { return i } } a.map(fn => { console.log(fn()) }) 以上代码的运行结果可能是什么? 0, 1, 2, ... 9  ? 结果是:连续输出了10次 10 简单的解释就是,当使用map遍历a中的每一个fn时,当fn执行时,在作用域链上查找i时,找到的i是最终已经变成了10的i,而

ES6 let和const 命令

一.let命令 使用的注意事项: 1.es6新增了let命令,它的用法和var 差不多,但是它声明的变量只在let命令所在的代码块有效 2.不存在变量提升,所以变量要声明后再使用,不然会报错 3.不允许在相同的作用域中重复声明同一个变量,所以也不能在函数里重新声明参数 4.let为js新增了块级作用域,这样就能避免变量的全局污染 4-1.为什么需要块级作用域 1.在es5中,函数作用域:内层变量可能会覆盖外层变量 2.用来计数的循环变量泄露为全局变量 4-2.es6中的块级作用域 1.避免循环变

ES6标准入门 第二章:块级作用域 以及 let和const命令

一.块级作用域 1.为什么需要块级作用域? ES5中只有全局作用域和函数作用域,带来很多不合理的场景. (1)内层变量可能会覆盖外层变量: var tem = new Date(); function f(){ console.log(tmp); if(false) { var tmp = "hello world"; } } f(); //undefined 变量提升导致了外层的内层的tmp变量覆盖了外层的tmp变量. (2)用来计数的循环变量泄露为全局变量: var s = &qu

es6的let 和const命令

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

ES6入门之let和const命令

前言 大家好,我是一只流浪的kk,当你看到这边博客的时候,说明你已经进入了ES6学习的领域了,从本篇博客开始,我将会将自己学习到ES6的相关知识进行整理,方便大家参考和学习,那么我将带你进入第一节的内容学习let和const命令,本篇博客从三个方面进行全方位解析. let命令 首先我们需要学习的是let命令的使用,这个使用非常简单,它其实也是声明变量的一种方式,和var相比我把它的特点总结了如下四点,一起来看看吧! (1):基本用法 <!DOCTYPE html> <html> &

1.《ES6标准入门》(阮一峰)--2.let 和 const 命令

1.let命令 基本用法 let只在命令所在的代码块内(花括号内)有效. for循环的计数器,就很合适使用let命令. //var var a = []; for (var i = 0; i < 10; i++) { a[i] = function () { console.log(i); }; } a[6](); // 10 //let var a = []; for (let i = 0; i < 10; i++) { a[i] = function () { console.log(i)

ES6教程:let和const命令的用法

ES6中新增了let和const命令,分别用于声明变量和常量. 1. 使用let命令取代var命令 在ES6之前的版本中,使用var声明变量,在ES6中新增了let来声明变量.let完全可以取代var,因为二者的语义相同,而且let没有"副作用". 我们先来看一下let命令有哪些特点: 不存在变量提升:变量只有在声明之后才能使用: 不允许重复声明:在相同的作用域下,一个变量名只能使用一次,不能重复声明: 具有块级作用域:在代码块中声明的变量,只对当前代码块和其内部嵌套代码块有效,如果嵌

ES6之let(理解闭包)和const命令

ES6之let(理解闭包)和const命令 最近做项目的过程中,使用到了ES6,因为之前很少接触,所以使用起来还不够熟悉.因此购买了阮一峰老师的ES6标准入门,在此感谢阮一峰老师的著作. 我们知道,ECMAScript 6即ES6是ECMAScript的第五个版本,因为在2015年6月正式发布,所以又成为ECMAScript2015.ES6的主要目的是为了是JS用于编写复杂的大型应用程序,成为企业级的开发语言. 说明:由于有时候我们希望得知es6代码的具体实现原理或者说希望能够转化为es5使用,

《ES6标准入门》10~28Page let和const命令 变量的解构赋值

1.let和const命令 (1)let命令 let命令类似于ES3中的var命令,但是所声明的变量只在let所在的代码块内有效. 1 { 2 let a = 10; 3 var b = 1; 4 } 5 6 console.log(a); //报错 7 console.log(b); //1 let相较var来讲有三个特殊性质,分别是不存在变量提升.暂时性死区和不允许重复声明. 1 //不存在变量提升 2 console.log(a); //报错 3 let a = 1; 4 5 //你无法在