es6 let
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<script src="js/browser.min.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
{
let a = 10;
var b = 1;
}
//console.log(a); //报错
console.log(b); //1
for(let i = 0; i < 10 ; i++){}
//报错console.log(i); //报错
var a = [];
for(var i = 0 ; i < 10 ; i++){
a[i] = function(){
console.log(i);
}
}
a[6](); //10
//let 版本
for(let i = 0 ; i < 10; i++){
a[i] = function(){
console.log(i);
}
}
a[6](); //6
//由于i是let生命的,当前的i只在本路循环有效。所以每一次循环的i其实都是一个新的值,所以输出6;
//不存在变量提升
//console.log(foo); //referunceError;
//typeof foo; //typof 不在安全
let foo = 2;
//暂时性死区
//只要块级作用域存在let命令,他声明的变量就绑定这个区域,不受外界影响
var tmp = 123;
if(true){
//tmp = 'abc'; //referernceError
let tmp;
}
//暂时性死区
if(true){
//死区开始
//tmp2 = 'abc'; //ReferenceError
//console.log(tmp2); //ref
let tmp2; //死区结束
console.log(tmp2);
tmp2 = 123;
console.log(tmp2);
}
function bar(x = y , y = 2){
return [x , y];
}
//由于x = y,而y没有声明,属于死区
//bar(); //y is not defined
function bar2(x = 2 , y = x){
return [x , y];
}
console.log(bar2()); //[2,2]
//不允许重复声明
if(true){
let a = 10;
//var a = 1; //has oready been declared
}
if(true){
let a = 10;
//let a = 10; //baocuo
}
//不许再函数内部重新声明参数
var func = function(args){
let args; //报错
}
func(1)
var func2 = function(args){
{
let args; //不报错
}
}
func2(1);
</script>
</body>
</html>
es6 let的更多相关文章
- ES6模块import细节
写在前面,目前浏览器对ES6的import支持还不是很好,需要用bable转译. ES6引入外部模块分两种情况: 1.导入外部的变量或函数等: import {firstName, lastName, ...
- webpack+react+redux+es6开发模式
一.预备知识 node, npm, react, redux, es6, webpack 二.学习资源 ECMAScript 6入门 React和Redux的连接react-redux Redux 入 ...
- ES6的一些常用特性
由于公司的前端业务全部基于ES6开发,于是给自己开个小灶补补ES6的一些常用特性.原来打算花两天学习ES6的,结果花了3天才勉强过了一遍阮老师的ES6标准入门(水好深,ES6没学好ES7又来了...) ...
- ES6(块级作用域)
我们都知道在javascript里是没有块级作用域的,而ES6添加了块级作用域,块级作用域能带来什么好处呢?为什么会添加这个功能呢?那就得了解ES5没有块级作用域时出现了哪些问题. ES5在没有块级作 ...
- es6小白学习笔记(一)
1.let和const命令 1.es6新增了let和const命令,与var用法类似,但它声明的变量只在let所在的代码块内有效(块级作用域,es5只有全局和函数作用域) { let a = 1; v ...
- ES6之变量常量字符串数值
ECMAScript 6 是 JavaScript 语言的最新一代标准,当前标准已于 2015 年 6 月正式发布,故又称 ECMAScript 2015. ES6对数据类型进行了一些扩展 在js中使 ...
- ES6之let命令详解
let与块级作用域 { var foo='foo'; let bar='bar'; } console.log(foo,'var'); //foo varconsole.log(bar ,'bar') ...
- ES6 箭头函数中的 this?你可能想多了(翻译)
箭头函数=>无疑是ES6中最受关注的一个新特性了,通过它可以简写 function 函数表达式,你也可以在各种提及箭头函数的地方看到这样的观点——“=> 就是一个新的 function”. ...
- ES6+ 现在就用系列(二):let 命令
系列目录 ES6+ 现在就用系列(一):为什么使用ES6+ ES6+ 现在就用系列(二):let 命令 ES6+ 现在就用系列(三):const 命令 ES6+ 现在就用系列(四):箭头函数 => ...
- ES6+ 现在就用系列(一):为什么使用ES6+
系列目录 ES6+ 现在就用系列(一):为什么使用ES6+ ES6+ 现在就用系列(二):let 命令 ES6+ 现在就用系列(三):const 命令 ES6+ 现在就用系列(四):箭头函数 => ...
随机推荐
- HDU4010 (动态树)
Problem Query on The Trees 题目大意 给一棵树,有点权,要求维护4种操作. 操作1:加一条边. 操作2:删一条边. 操作3:将一条路径上的点权增加w. 操作4:询问一条路径上 ...
- MVC 知识点学习2
1._Layout.cshtml @RenderBody() 2.自定义扩展HtmlHelper(需要添加Bootstrap.js或者Bootstrap.min.js文件到项目中) namespa ...
- 10道javascript笔试题
1.考察this JavaScript var length = 10; function fn() { console.log(this.length); } var obj = { length: ...
- 一些js小知识点整理
string.substring(a,b) 从a点开始截取,到b点结束 string.substr(a,b) 从a点开始截取,截取b个 BOM的四个对象,navigator.screen.l ...
- RTSP协议媒体数据发包相关的细节
最近完成了一RTSP代理网关,这是第二次开发做RTSP协议相关的开发工作了,相比11年的简单粗糙的版本,这次在底层TCP/IP通讯和RTSP协议上都有了一些新的积累,这里记录一下.基本的RTSP协议交 ...
- Loadrunner进行接口自动化测试
我们以测试豆瓣api获取图书信息的接口为例 接口的信息如下: 接口ip:https://api.douban.com/v2/book/:id 接口返回值:status=200 返回数据: { - (图 ...
- Windows下的Eclipse启动出现:a java runtime environment(JRE) or java development kit(JDK) must be
打开eclipse的时候回遇到这种情况 解决方案: 进入eclipse.exe所在的目录,在eclipse.ini文件中加入以下两行: -vm <your path to jdk|jre> ...
- zookeeper的安装(图文详解。。。来点击哦!)
zookeeper的安装(图文详解...来点击哦!) 一.服务器的配置 三台服务器: 192.168.83.133 sunshine 192.168.83.134 sunshineMin 19 ...
- String、Stringbuffer、StringBuilder的区别(转载)
最近学习到StringBuffer,心中有好些疑问,搜索了一些关于String,StringBuffer,StringBuilder的东西,现在整理一下. 关于这三个类在字符串处理中的位置不言而喻,那 ...
- python之列表常见操作
list = [1,2,3,4,5,6,7,8,9,0,0,0,0,0] listSet = list.set(list)#将列表中的数据进行去重处理 此时listSet中的数据为[1,2,3,4,5 ...