一、let

1、let块作用域

if(true){var a=1;let b=2;}console.log("a:"+a);//a:1console.log("b:"+b);//Uncaught ReferenceError: b is not defined

2、let常用于for循环

  var a=[];for (let i = 0; i < 10; i++) {a[i] = function () {console.log(i);   //6 //变量i是let声明的,当前的i只在本轮循环有效。所以每一次循环的i其实都是一个新的变量,于是最后输出的是6
        };}a[6]();

3、typeof不再是一个百分之百安全的操作

   console.log(typeof x);//undefinedconsole.log(typeof y);//Uncaught ReferenceError: y is not definedvar x=2;let y=3;

typeof运行时y尚未声明,所以报错。

4、隐蔽的暂时性死区

    //正确function bar(x=2, y=x) {return [x, y];}console.log(bar());//[2,2]

//报错function bar(x=y, y=2) {return [x, y];}console.log(bar());//Uncaught ReferenceError: y is not defined

5、不允许重复声明

不能在函数内重复声明参数

function bar(arg) {let arg;//Uncaught SyntaxError: Identifier 'arg' has already been declared}

二、const

1、const声明的变量也是块作用域,但是不能被多次修改

let a=10;const b=20;console.log(a);console.log(b);a=100;b=200;//Uncaught TypeError: Assignment to constant variable.

2、const 声明变量时必须赋值

const a;//Uncaught SyntaxError: Missing initializer in const declaration

3、const可以指定为对象

const常亮指向对象的指针不能变,对象本身是可以改变的

let user={name:"starof",age:25};const LOVE_YOU=user;console.log(user);/*LOVE_YOU=1;//报错*/user.age=18;console.log(user);

三、babel【update20170605】

下面代码在es5中输出inside,在es6中输出outside。

如果确定是在es5中还是在es6中运行?可以通过babel使其在es6中执行。

<!doctype html>
<html lang="en">
<head><meta charset="UTF-8"><title>Document</title><script src="js/browser.js"></script>
</head>
<body>
<script type="text/babel">function f() {console.log("outside");}(function () {if (true) {//重复 声明ffunction f() {console.log("inside"); //babel解析为es6所以输出outside
            }}f();}())
</script>

四、全局变量和全局对象的属性【update20170605】

es6中规定:

var和function声明的全局变量,依旧是全局对象的属性

let,const声明的全局变量不属于全局对象的属性

以下代码输出什么结果?

let b=1;
console.log(window.b++);//NaN

本文作者starof,因知识本身在变化,作者也在不断学习成长,文章内容也不定时更新,为避免误导读者,方便追根溯源,请诸位转载注明出处:http://www.cnblogs.com/starof/p/6919624.html有问题欢迎与我讨论,共同进步。

转载于:https://www.cnblogs.com/starof/p/6919624.html

es6 let和const相关推荐

  1. ES6 let和const 命令

    ES6 let 和 const 命令 1. 变量声明 2. 变量提升问题 3. 暂时性死区(TDZ) 4. 块级作用域 4.1 为什么需要块级作用域? 4.2 ES6的块级作用域 4.3 块级作用域和 ...

  2. ES6 - let、const与作用域

    一.let 1.1 学习let,首先我们来看一段代码: function test(){for(var i=0;i<3;i++){console.log(i) //1,2}console.log ...

  3. ES6 let与const基础用法笔记

    ES2015(ES6)新增了两个JS关键字:let和const.主要是用来变量的声明. 2.let 用法示例 { let score=100; alert(score); } let 特性 代码块内有 ...

  4. ES6 let和const命令(3)

    const 用来声明常量.一旦声明,就不能改变. const在声明必须初始化,只声明不赋值会出错 const的作用域与let一样,只在声明的块级作用域有效. const命令声明的常量也不提升,同样存在 ...

  5. es6 let和const命令(1)

    基本用法 ES新增了let命令,用于声明变量.其用法类似于var,但是所声明的变量只在let命令所在的代码块中有效. for(let i = 0;i<5;i++) {} console.log( ...

  6. ES6——let、const和var的用法和区别

    ES6 新增了let命令,用来声明变量,新增了const命令,用来声明常量,它们的用法类似于var. let a = 1; var b = 2; const PI = 3.14; 主要区别 块级作用域 ...

  7. ES6 | let 关键字 + const关键字 + 箭头函数 + rest参数 + 扩展运算符 ... + Symbol + 迭代器 + 生成器 + 变量的解构赋值 + 模板字符串

    目录 ECMASript 相关介绍 ECMASript 6 新特性 let 关键字 const关键字 变量的解构赋值 模板字符串 简化对象写法 箭头函数 => 参数默认值 rest参数 扩展运算 ...

  8. es6——let和const

    文章目录 let和const let基本用法 const基本用法 ES6 新增了let命令,用来声明变量.它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效. let和const ...

  9. ES6 let 和 const 关键字

    一.ES5 的 var 关键字 var 存在变量提升 var 允许重复声明,浏览器本身只识别一次,但不会报错 var 声明的变量即是全局变量,也相当于给 GO(window) 设置了一个属性而且两者建 ...

最新文章

  1. Lucene第一篇【介绍Lucene、快速入门】
  2. 使用 Visual Studio Team Services 和 IIS 创建持续集成管道
  3. openresty + lua
  4. html引入jquery_jQuery介绍
  5. 利用套接字实现 CS 模型
  6. javaScript之数组Array
  7. 1.5 编程基础之循环控制 20 球弹跳高度的计算
  8. 测试POSIX、System V消息队列时延和性能
  9. CentOS 7.4创建普通用户赋予登录权限
  10. 基于Python的数据分析
  11. VS2012更改/重置默认开发环境
  12. Linux那些事儿 之 我是PCI(1)PCI,我们来了
  13. Photoshop脚本 批量生成Web切图
  14. 《muduo网络库》学习笔记——时间轮Timeing wheel
  15. KEIL,#ifdef宏定义下失效代码差异性显示
  16. 西门子PLC1200学习之数学运算功能的应用
  17. SAP 接口 inbound (SAP CALL JAVA ) 负载均衡说明
  18. 汇川PLC单位换算及电子齿轮比
  19. 专訪印度电商Snapdeal CEO:学阿里还是京东
  20. 名利双收的电竞主播光鲜外衣下,未来堪忧?

热门文章

  1. 【SpringBoot】 配置文件的拆分
  2. 【网络信息安全】Web 安全
  3. Linux下服务器搭建(5)——CentOS下Redis的安装
  4. [转]2020年2月份Github上最热门的开源项目,速来围观
  5. seaborn常用速查手册
  6. 二胎上位之路:html5报表和原生报表的笑尿撕逼
  7. 关于生活的计算机试题,国家电网考试计算机类试题三
  8. linux 脚本中的push,在Linux系统下实现ServerPush(转)
  9. testflight测试软件怎么,TestFlight使用步骤
  10. $_server[#039;php_auth_user#039;],ecshop中$user ($GLOBALS[#039;user#039;])对象在哪里定义的...