es6 let和const
一、let
1、let块作用域
if(true){
var a=1;
let b=2;
}
console.log("a:"+a);//a:1
console.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);//undefined
console.log(typeof y);//Uncaught ReferenceError: y is not defined
var 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) {
//重复 声明f
function 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有问题欢迎与我讨论,共同进步。
es6 let和const的更多相关文章
- (1)ES6中let,const,对象冻结,跨模块常量,新增的全局对象介绍
1.let声明变量,var声明变量,而const声明的常量 2.let与var的区别 let可以让变量长期驻扎在内存当作 let的作用域是分块[ {快1 {快2 } }每个大括号表示一个独立的块 ...
- ES6 let和const详解及使用细节
ES6之前javascript只有全局作用域和函数作用域,所以经常会遇到变量提升了或者使用闭包的时候出错的问题. 所有a[i]都会输出10: var arr=[]; for (var i=0;i< ...
- 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( ...
- JavaScript ES6 let、const
在ES6中,增加了2个声明变量的关键字:let 和 const.在这里将详细介绍let与var的区别.Babel对let的处理以及const的简单使用. 1. let 在ES6规范中增加了 let 关 ...
- es6 let 和 const
function test(){ let a = 1 for (let i =0;i<3;i++){ console.log(i) //1,2 } console.log(i) ...
- ES6的 let const 以及块级作用域
let声明变量 用法类似于var,但是所声明的变量只在let所在的代码块内有效. 1 . 在ES6环境下,let声明的变量不能在声明之前调用. 例: console.log(i); //会报错,这叫做 ...
- es6的let,const
1.es6 新增的let const 命令 let用来定义一个局部变量,故名思意就是只在当前代码块可用 1.1 let 声明的变量不存在变量提升(var 声明的变量存在变量提升)且代码块内 暂时性死区 ...
- es6中let,const区别与其用法
ECMAScript 是什么? 首先,我们都知道JavaScript由三部分组成:ECMAScript,DOM,BOM: 其中的ECMAScript是Javascript的语法规范. ECMAScri ...
随机推荐
- 利用C#进行AUTOCAD的二次开发
众所周知,对AutoCAD进行二次开发用到的主要工具有:ObjectArx,VBA,VLisp.但它们的优缺点是显而易见的:ObjectArx功能强大,编程效率高,但它的缺点是编程者必须掌握VC++, ...
- 题解-PKUWC2018 Minimax
Problem loj2537 Solution pkuwc2018最水的一题,要死要活调了一个多小时(1h59min) 我写这题不是因为它有多好,而是为了保持pkuwc2018的队形,与这题类似的有 ...
- SIFT+BOW 实现图像检索
原文地址:https://blog.csdn.net/silence2015/article/details/77374910 本文概述 图像检索是图像研究领域中一个重要的话题,广泛应用于医学,电子商 ...
- (转!)利用Keras实现图像分类与颜色分类
2018-07-19 全部谷歌渣翻加略微修改 大家将就的看哈 建议大佬们还是看看原文 点击收获原文 其中用到的示例文件 multi-output-classification 大家可以点击 下载 . ...
- javacv:调取本地摄像头,抓取人脸,保存为图片
MAVEN: <dependency> <groupId>org.bytedeco</groupId> <artifactId>javacv-platf ...
- 如何:配置 ClickOnce 信任提示行为
转载链接:https://technet.microsoft.com/zh-cn/magazine/ee308453 可以配置 ClickOnce 信任提示以控制是否允许最终用户选择安装 ClickO ...
- ASP.NET Core之NLog使用
1.新建ASP.NET Core项目 1.1选择项目 1.2选择.Net版本 2. 添加NLog插件 2.1 通过Nuget安装 2.2下载相关的插件 3.修改NLog配置文件 3.1添加NLog配置 ...
- Netflix正式开源其API网关Zuul 2
5 月 21 日,Netflix 在其官方博客上宣布正式开源微服务网关组件 Zuul 2.Netflix 公司是微服务界的楷模,他们有大规模生产级微服务的成功应用案例,也开源了相当多的微服务组件(详见 ...
- ipfs上传下载
上传下载步骤: 启动ipfs节点服务器: 页面效果显示如下: 当在一个终端启动ipfs节点服务器之后之后,上传下载步骤: 1.创建文件demo4,新建一个文件a.txt,文本内容为hello mkdi ...
- Codeforces 1097G Vladislav and a Great Legend [树形DP,斯特林数]
洛谷 Codeforces 这题真是妙的很. 通过看题解,终于知道了\(\sum_n f(n)^k\)这种东西怎么算. update:经过思考,我对这题有了更深的理解,现将更新内容放在原题解下方. ...