<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>let用途</title>
<script src="../../../vendor/traceur.js"></script>
<script src="../../../vendor/bootstrap.js"></script>
<script type="text/traceur"> /*ES6新增了let命令,用来声明变量。它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效。 let不像var那样,会发生“变量提升”现象。 只要块级作用域内存在let命令,它所声明的变量就“绑定”(binding)这个区域,不再受外部的影响。 let不允许在相同作用域内,重复声明同一个变量。
*/ var a = 100;
let b = 200;
console.log(a); //100
console.log(b); //200 {
var a = 100;
let b = 200;//大括号作用范围,不是函数作用域,
}
console.log(a); //100
console.log(b); //b is not defined -- Error ------------------------------------------------------------------- {
var a = 100;
let b = 200;//大括号作用范围,不是函数作用域, var d = b;
var e = a;//语句已经执行了,进行了值传递,后面变量销毁和重新赋值不影响
}
a = 300;
console.log(a); //300
console.log(d); //200
console.log(e); //100
//console.log(b); //b is not defined -- Error for (let j = 0; j < 3; j++)
{
console.log(j);//0,1,2
}; public static void main (String[] args) throws java.lang.Exception
{
int a = 3;
{
int b = a;
a = 5;
System.out.println(b);//3
} } var a = 1;
var a = 2;
console.log(a);//2
</script>
</head>
<body> </body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>let不存在变量提升</title>
<script src="../../../vendor/traceur.js"></script>
<script src="../../../vendor/bootstrap.js"></script>
<script type="text/traceur">
//ES5
console.log("ES5:");
var a = [];
for (var i = 0; i < 10; i++)
{
var c = i;
a[i] = function () {
console.log(c);//基本变量是值传递,只有这行语句执行的时候,才会使用到c的值,此时c已经变成了9
};
console.log(a[i]);
}; a[5](); //9 //ES6
console.log("ES6:");
var b = [];
for (var j = 0; j < 10; j++)
{
let d = j;//每次都声明一个新的变量d,var不是,每次都是用之前声明的变量c,语句执行之前不会进行预加载,
b[j] = function () {
console.log(d);//这行语句执行的时候,使用的是d的值,而每一个d都是一个新的d值不一样
};
};
b[5](); //5
</script>
</head>
<body> </body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>let暂时性死区</title>
<script src="../../../vendor/traceur.js"></script>
<script src="../../../vendor/bootstrap.js"></script>
<script type="text/traceur">
{
console.log(a); //undefined 语句执行之前不会进行预加载,
let a = 100;
}
{
let a = 100;
console.log(a); //100
}
-------------------------------------------------------
var a = 200;
{ console.log(a); //undefined,不能用外部的a了,大括号里面都是let的a,
let a = 100; //从声明的地方开始才能使用变量a
console.log(a); //100,不受外部影响。
} {
var a = 100;
var a = 200;
console.log(a);
}
// 报错
{
var b = 100;
let b = 200;
console.log(b);
}
// 报错
{
let c = 100;
var c = 200;
console.log(c);
}
// 报错
{
let d = 100;
let d = 200;
console.log(d);
} // 模块之间不影响,可以重复声明
{
var a = 100;
var a = 200;
console.log(a);
}
{
let a = 300;
console.log(a);
}
// 模块内部不允许用let命令重复声明
{
var a = 1;
let a = 2;
}
</script>
</head>
<body> </body>
</html>

let只在大括号内有效,并且优先级高于var。

es62的更多相关文章

  1. ES6-2

    向ES6看齐,用更好的JavaScript(二)   上一篇 中介绍了关于变量部分的新特性,本篇将从现有对象的拓展来展开介绍 1 增加了模板字符串 先看一下,ES6之前我们是如何实现输出模板的: do ...

  2. 图学ES6-2.let与const命令

  3. Linux中查看是否是固态硬盘(SSD)

       最近在准备测试,需要看看哪些机器挂载的是ssd硬盘,Google了一圈看到了许多方法,但都云里雾里的,不知道怎么确定.ssd硬盘貌似使用的也是scsi接口,所以根据盘符的名称也是判断不出来的.最 ...

随机推荐

  1. 继承—Monkey

    public class Monkey { public void Monkey(String s){ } public void speak(){ System.out.println(" ...

  2. Matlab函数编译成dll供c调用

    一 编译dll 在Command Window窗口中输入mbuild -setup,然后会出现语句,是否安装编译器,选择n,因为机子上已经安装了C/C++/C#的编译器,选择VS2010.

  3. Ubuntu14.04下tensorflow安装

    自己电脑没装双系统,于是决定在虚拟机里装个tensorflow,以下是安装过程: 1.安装anaconda2 for Linux 官网下的话很慢,去清华的镜像网站下吧,我上一篇文章有网址 安装:bas ...

  4. exsi的虚拟机加载U盘

    1. 添加usb控制器: 2.添加设备

  5. 安装Debugging Tools时出现错误Setup could not find the file WinSDK_amd64的处理

    安装Debugging Tools时出现错误Setup could not find the file WinSDK_amd64的处理 1.软件来源:  微软官网下载SDK ISO安装包(含有debu ...

  6. bzoj 1588 [HNOI2002] 营业额统计 链表和Splay

    来自HNOI 2002营业额的统计一题,这题以前是用链表水过的,最近看见许多splay的题,赶紧张一下知识. 题目大意就是对于一个序列,输出每个元素与它之前元素的差的最小值的和.先说链表的方法吧. 大 ...

  7. who---显示目前登录系统的用户信息

    who命令是显示目前登录系统的用户信息.执行who命令可得知目前有那些用户登入系统,单独执行who命令会列出登入帐号,使用的终端机,登入时间以及从何处登入或正在使用哪个X显示器. 语法 who(选项) ...

  8. mysql查询今天,昨天,近7天,近30天,本月,上一月数据

    近期项目中用到了查询当月数据记录的功能,最初的想法是在逻辑业务里构造好时间段进行查询,当写sql语句时感觉挺麻烦.所以就到网上搜索了一下,看看是不是能有简单的方法.果然.网络资源非常强大.以下结合我的 ...

  9. 推荐一款优雅的jquery手风琴特效

    推荐一款基于 jQuery和 CSS3实现的手风琴效果. 查看demo演示

  10. vim使用(二):经常使用功能

    1. vim经常使用功能 vim的经常使用功能.包含块的选择.复制,多文件的编辑.多窗体等功能. 2. vim块选择 块选择是将文档中的一块能够选择复制,粘贴,不用整行的处理. 按下 v , V . ...