【es6】【块级作用域 and const】
2018-01-17 16:51
344 查看
两种新增块级作用域的方式:
let为JavaScript新增了块级作用域:function f() {
let a = 10;
if (true) {
let a = 5;
}
console.log(a);//会输出10,如a变量都是var定义的,则会是5
}
--------------------------------------
{{{
{let tmp = 'hello'}
console.log(tmp);//无法读取内层作用域中的变量
}}};
==========================
块级作用域内声明函数:
//声明语句{
let a = 'hi';
function f () {
return a;
}
}
----------------------避免在块级作用域内声明函数。如需要,也应该写成函数表达式
//表达式
{
let a = 'hi';
let f = function () {
return a;
}
}
--------------------------
do 表达式-使块级作用域有一个返回值
本质上,块级作用域是一个语句,它没有返回值。
{
let f = function () {
return 1;
};
let t = f();
t = t * t + 1;
}
console.log(t);//获取不到,因为块级作用域不返回值,除非t是全局变量
-------------------------------
获取块级作用域值的一种方法:
{
let f = function () {
return 1;
};
var t = f();//此处将t泄露为一个全局变量
t = t * t + 1;
}
console.log(t);//可获取到--2
【提案--未实现--下个版本】 do 表达式:
let x = do {
let f = function () {
return 1;
};
let t = f();
t = t * t + 1;
}
console.log(x);//可获取到
=======================
const 声明一个只读的常量---不能改变。
const 的作用域与let命令相同---只在其声明中的块级作用域内有效
还具有以下属性:
不提升;存在暂时死区;不可重复;只能在声明的位置后才能使用。
const并不能保证复合类型数据(对象和数组)的数据结构不可变,只能保证指针是固定的:
--------------------------
const a = [];
a.push('hi');//可执行
a.length = 0;//可执行
a = ['hello'];//报错
相关文章推荐
- ES6 let命令和块级作用域和const命令
- 开始学习es6(二) let 与 const 及 块级作用域
- ES6 let,const命令和块级作用域
- ES6之let,const和块级作用域
- ECMAScript6(ES6)标准之let、const关键字与块级作用域
- es6-块级作用域绑定
- ES6 中 let and const
- ES6的块级作用域--读书笔记
- ES6笔记(2)-- let的块级作用域
- ES6-块级作用域
- ES6之let、const和块级作用域
- 搭建Babel运行环境,Traceur ES6模板,块级作用域,let和const命令
- ES6里关于作用域的拓展:块级作用域
- ES6之块级作用域
- Es6入门之块级作用域
- ES6-let带来了更简单的块级作用域
- ES6 块级作用域
- ES6入门(一):块级作用域
- 深入理解ES6 - 块级作用域绑定
- ES6新特性:块级作用域let和const