es6 let和const
一、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相关推荐
- ES6 let和const 命令
ES6 let 和 const 命令 1. 变量声明 2. 变量提升问题 3. 暂时性死区(TDZ) 4. 块级作用域 4.1 为什么需要块级作用域? 4.2 ES6的块级作用域 4.3 块级作用域和 ...
- ES6 - let、const与作用域
一.let 1.1 学习let,首先我们来看一段代码: function test(){for(var i=0;i<3;i++){console.log(i) //1,2}console.log ...
- ES6 let与const基础用法笔记
ES2015(ES6)新增了两个JS关键字:let和const.主要是用来变量的声明. 2.let 用法示例 { let score=100; alert(score); } let 特性 代码块内有 ...
- ES6 let和const命令(3)
const 用来声明常量.一旦声明,就不能改变. const在声明必须初始化,只声明不赋值会出错 const的作用域与let一样,只在声明的块级作用域有效. const命令声明的常量也不提升,同样存在 ...
- es6 let和const命令(1)
基本用法 ES新增了let命令,用于声明变量.其用法类似于var,但是所声明的变量只在let命令所在的代码块中有效. for(let i = 0;i<5;i++) {} console.log( ...
- ES6——let、const和var的用法和区别
ES6 新增了let命令,用来声明变量,新增了const命令,用来声明常量,它们的用法类似于var. let a = 1; var b = 2; const PI = 3.14; 主要区别 块级作用域 ...
- ES6 | let 关键字 + const关键字 + 箭头函数 + rest参数 + 扩展运算符 ... + Symbol + 迭代器 + 生成器 + 变量的解构赋值 + 模板字符串
目录 ECMASript 相关介绍 ECMASript 6 新特性 let 关键字 const关键字 变量的解构赋值 模板字符串 简化对象写法 箭头函数 => 参数默认值 rest参数 扩展运算 ...
- es6——let和const
文章目录 let和const let基本用法 const基本用法 ES6 新增了let命令,用来声明变量.它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效. let和const ...
- ES6 let 和 const 关键字
一.ES5 的 var 关键字 var 存在变量提升 var 允许重复声明,浏览器本身只识别一次,但不会报错 var 声明的变量即是全局变量,也相当于给 GO(window) 设置了一个属性而且两者建 ...
最新文章
- Lucene第一篇【介绍Lucene、快速入门】
- 使用 Visual Studio Team Services 和 IIS 创建持续集成管道
- openresty + lua
- html引入jquery_jQuery介绍
- 利用套接字实现 CS 模型
- javaScript之数组Array
- 1.5 编程基础之循环控制 20 球弹跳高度的计算
- 测试POSIX、System V消息队列时延和性能
- CentOS 7.4创建普通用户赋予登录权限
- 基于Python的数据分析
- VS2012更改/重置默认开发环境
- Linux那些事儿 之 我是PCI(1)PCI,我们来了
- Photoshop脚本 批量生成Web切图
- 《muduo网络库》学习笔记——时间轮Timeing wheel
- KEIL,#ifdef宏定义下失效代码差异性显示
- 西门子PLC1200学习之数学运算功能的应用
- SAP 接口 inbound (SAP CALL JAVA ) 负载均衡说明
- 汇川PLC单位换算及电子齿轮比
- 专訪印度电商Snapdeal CEO:学阿里还是京东
- 名利双收的电竞主播光鲜外衣下,未来堪忧?
热门文章
- 【SpringBoot】 配置文件的拆分
- 【网络信息安全】Web 安全
- Linux下服务器搭建(5)——CentOS下Redis的安装
- [转]2020年2月份Github上最热门的开源项目,速来围观
- seaborn常用速查手册
- 二胎上位之路:html5报表和原生报表的笑尿撕逼
- 关于生活的计算机试题,国家电网考试计算机类试题三
- linux 脚本中的push,在Linux系统下实现ServerPush(转)
- testflight测试软件怎么,TestFlight使用步骤
- $_server[#039;php_auth_user#039;],ecshop中$user ($GLOBALS[#039;user#039;])对象在哪里定义的...