ECMAScript 6中let和const详解

1:Let命令

(1)Let定义块级作用域的变量,var定义的变量会提升。Let不会提升。如下。可以先用是undefined但是let在定义之前是不能用的。会报错Uncaught ReferenceError: letter is not defined(…)

console.log(color)

console.log(letter)

var color = ‘red‘;

let letter = ‘a‘

只要块级作用域内存在let命令,声明的变量不受外部影响。

var tmp = 123;

if (true) {

tmp = ‘abc‘; //tmp is not defined(…)

let tmp;

}

在代码块内,使用let命令声明变量之前,该变量都是不可用,称“暂时性死区”;

typeof x;  //使用是在let声明之前x is not defined(…)

let x;

再如function bar(x = y, y = 1) {

return [x, y];

}

bar();// y is not defined(…)x的默认值等于y,此时y还没声明。

(2)通过var在块作用域中定义变量在外面可以访问,{}

通过let在块作用域中定义的变量,在外面不可以访问{}

if (true) {

// 块作用域里面都可以访问

var color = ‘red‘;

let letter = ‘a‘

console.log(color)

console.log(letter)

}

console.log(color)  //可以访问

console.log(letter)  //不能访问letter is not defined(…)

(3)let保存变量

var arr = []

for (var i = 0; i < 5; i++) {

arr[i] = function  () {

console.log(i, ‘iii‘)

}

}

arr[1]()    //5,‘iii’

i是全局for循环外面也可以访问。For循环完之后i是5

var arr = [];

for (let j = 0; j < 5; j++) {

arr[j] = function  () {

console.log(j, ‘jjjj‘)

}

}

arr[1]();  // 1,’iii’

这个函数的时候,会找到这个块作用域,这个作用域中定义了块作用域变量j

console.log(i, j)   j是外面无法访问的。

(4):不允许重复声明

function () {

let a = 10;

var a = 1;

}

//Uncaught SyntaxError: Unexpected token (

function () {

let a = 10;

let a = 1;

}

//Uncaught SyntaxError: Unexpected token (

2:const命令

(1)定义之后再也无法修改 (大写,下划线)

var PI = Math.PI;

PI = 3;

console.log(PI)   //3

const PI = Math.PI

PI = 3;

console.log(PI)  // 报错Assignment to constant variable.(…)

(2)在块作用域中定义一个常量  块作用域内访问有效。外面是访问不到的

if (true) {

const PIa = Math.PI

Let   PIa = Math.PI

}

console.log(PIa)  //PIa is not defined(…)

(3)必须先定义再使用

console.log(PIa)  //Identifier ‘PI‘ has already been declared(…)

const PI = Math.PI;

时间: 2024-10-16 16:28:52

ECMAScript 6中let和const详解的相关文章

c/c++中const详解

c/c++中const详解 来自http://blog.csdn.net/lwbeyond/article/details/6187501 一. cons 的作用 (1) 可以定义 const 常量 const int Max=100; int Array[Max]; (2) 可以保护被修饰的东西,防止意外的修改,增强程序的健壮性 如果在函数体内修改了i,编译器就会报错: void f (const int i) { i=10;//error! } (3) 为函数重载提供了一个参考 class 

delphi中的Format函数详解

首先看它的声明:[[email protected]][@21ki!] function Format(const Format: string; const Args: array of const): string; overload;[[email protected]][@21ki!] 事实上Format方法有两种形式,另外一种是三个参数的,主要区别在于它是线程安全的,[[email protected]][@21ki!]但并不多用,所以这里只对第一个介绍:[[email protect

linux-2.6.26内核中ARM中断实现详解(转)

转载:http://www.cnblogs.com/leaven/archive/2010/08/06/1794293.html 更多文档参见:http://pan.baidu.com/s/1dDvJRaD 作者:刘洪涛,华清远见嵌入式学院金牌讲师,ARM ATC授权培训讲师. 看了一些网络上关于linux中断实现的文章,感觉有一些写的非常好,在这里首先感谢他们的无私付出,然后也想再补充自己对一些问题的理解.先从函数注册引出问题吧. 一.中断注册方法 在linux内核中用于申请中断的函数是req

Objective-c中的Block(块)详解

Block初探 在Objective-c中NSArray是很常用的容器之一,很多时候我们需要对数组中的数据进行排序,因此与下面类似的代码会经常碰到: NSArray *sortedArray = [array sortedArrayUsingComparator: ^(id obj1, id obj2) { if ([obj1 integerValue] > [obj2 integerValue]) { return (NSComparisonResult)NSOrderedDescending

unity中camera摄像头控制详解

目录 1. 缘起 2. 开发 2.1. 建立项目 2.2. 旋转 2.2.1. 四元数 2.3. 移动 2.3.1. 向量操作 2.4. 镜头拉伸 2.5. 复位 2.6. 优化 1 缘起 我们的产品是使用unity开发水利BIM(水利建筑信息模型),项目中需要控制摄像 头对模型进行360度查看,请注意所有操作都是移动摄像头,不是移动模型.摄 像头能进行移动.旋转.改变焦距操作,类似于SketchUp的控制操作: 摄像头移动时,根据当前旋转方向(Rotation)进行移动 摄像头距离模型越远,摄

图像处理中的数学原理详解17——卷积定理及其证明

欢迎关注我的博客专栏"图像处理中的数学原理详解" 全文目录请见 图像处理中的数学原理详解(总纲) http://blog.csdn.net/baimafujinji/article/details/48467225 图像处理中的数学原理详解(已发布的部分链接整理) http://blog.csdn.net/baimafujinji/article/details/48751037 1.4.5   卷积定理及其证明 卷积定理是傅立叶变换满足的一个重要性质.卷积定理指出,函数卷积的傅立叶变

iOS中UIWebView的使用详解

iOS中UIWebView的使用详解 一.初始化与三种加载方式 UIWebView继承与UIView,因此,其初始化方法和一般的view一样,通过alloc和init进行初始化,其加载数据的方式有三种: 第一种: - (void)loadRequest:(NSURLRequest *)request; 这是加载网页最常用的一种方式,通过一个网页URL来进行加载,这个URL可以是远程的也可以是本地的,例如我加载百度的主页:     UIWebView * view = [[UIWebView al

JQuery中$.ajax()方法参数详解

url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址. type: 要求为String类型的参数,请求方式(post或get)默认为get.注意其他http请求方法,例如put和 delete也可以使用,但仅部分浏览器支持. timeout: 要求为Number类型的参数,设置请求超时时间(毫秒).此设置将覆盖$.ajaxSetup()方法的全局设 置. async:要求为Boolean类型的参数,默认设置为true,所有请求均为异步请求. 如果需要发送同步请求,请将此选项

Scala 深入浅出实战经典 第53讲:Scala中结构类型实战详解

王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-64讲)完整视频.PPT.代码下载:百度云盘:http://pan.baidu.com/s/1c0noOt6 腾讯微云:http://url.cn/TnGbdC 360云盘:http://yunpan.cn/cQ4c2UALDjSKy 访问密码 45e2土豆:http://www.tudou.com/programs/view/pR_4sY0cJLs/优酷:http://v.youku.com/v_show/id_