相思资源网 Design By www.200059.com
let和const声明的变量只在代码块内有效
{ let a = 10; var b = 1; } a // ReferenceError: a is not defined. b // 1
不存在变量提升
变量一定要在声明后使用,否则报错
var tmp = 123; if (true) { tmp = 'abc'; // ReferenceError let tmp; }
不允许重复声明
// 报错 function () { let a = 10; var a = 1; }
块级作用域
function f() { console.log('I am outside!'); } (function () { if(false) { // 重复声明一次函数f function f() { console.log('I am inside!'); } } f(); }()); //I am inside! ES5 函数提升 //I am outside! ES6 块级作用域
const命令
声明一个只读的常量,一旦声明,常量的值就不能改变
一旦声明变量,就必须立即初始化,不能留到以后赋值
let命令、const命令、class命令声明的全局变量,不属于全局对象的属性
var a = 1; // 如果在Node的REPL环境,可以写成global.a // 或者采用通用方法,写成this.a window.a // 1 let b = 1; window.b // undefined
下面再单独给大家介绍ES6之const命令
一直以来以ecma为核心的js始终没有常量的概念,es6则弥补了这一个缺陷;
const foo='foo'; foo='bar';//TypeError: Assignment to constant variable.
上例声明了一个基本类型的常量,如过试图修改初始值则会报错;如果是引用类型的值同样适用,但是有一点需要注意,举例说明:
const foo=[]; foo=[1];//Assignment to constant variable.
正常报错,没毛病,再看:
const foo=[1,2,3]; foo[1]=4; console.log(foo)//[1, 4, 3]
这怎么没报错?而且还能修改成功? 这两个例子不一样的地方在于前者是修改了指针(需熟悉js 引用类型)对应的内容改变了,后者则不是指向依然没变 但是指向对象的内容发生改变了,对于foo而言我只是一个指针负责指向对应的对象 至于对象内容是什么就不管我的事了所以可以修改;如果不想让内容也改变也行使用另一个方法;
const foo=Object.freeze([1,2,3]); foo[1]=4; console.log(foo)//[1, 2, 3]
这样就不用担心被修改了;
相思资源网 Design By www.200059.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
相思资源网 Design By www.200059.com
暂无深入浅出ES6之let和const命令的评论...
P70系列延期,华为新旗舰将在下月发布
3月20日消息,近期博主@数码闲聊站 透露,原定三月份发布的华为新旗舰P70系列延期发布,预计4月份上市。
而博主@定焦数码 爆料,华为的P70系列在定位上已经超过了Mate60,成为了重要的旗舰系列之一。它肩负着重返影像领域顶尖的使命。那么这次P70会带来哪些令人惊艳的创新呢?
根据目前爆料的消息来看,华为P70系列将推出三个版本,其中P70和P70 Pro采用了三角形的摄像头模组设计,而P70 Art则采用了与上一代P60 Art相似的不规则形状设计。这样的外观是否好看见仁见智,但辨识度绝对拉满。