ES6(一)const与let
来源:互联网 发布:淘宝宝贝去哪里点发货 编辑:程序博客网 时间:2024/05/16 11:07
一 let 命令
(1) let声明的变量在代码块{}中有效
{ let a = 10; var b = 1;}output:a //ReferenceError: a is not definedb //1
//打印循环计数//var 声明的变量,通过闭包实现var a = [];for (var i = 0; i < 10; i++) { a[i] = (function (i) { console.log(i); })(i);}a[6](); // 6
//let实现var a = [];for (let i = 0; i < 10; i++) { a[i] = function () { console.log(i); };}a[6](); // 6
(2) let不存在变量提升
if (1) { typeof x; // ReferenceError let x;}
(3) 只要块级作用域内存在 let 命令,它所声明的变量就“绑定”(binding)这个区域,不再受外部的影响。
var tmp = 123;if (true) { tmp = 'abc'; // ReferenceError let tmp;}
(4) 在代码块内,使用 let 命令声明变量之前,该变量都是不可用的。这在语法上,称为“暂时性死区”
if (true) { // TDZ开始 tmp = 'abc'; // ReferenceError console.log(tmp); // ReferenceError let tmp; // TDZ结束 console.log(tmp); // undefined tmp = 123; console.log(tmp); // 123}
(5) 隐蔽的死区分析(函数参数=左边为函数内部声明,右边为函数外部声明)
function bar(x=y, y=2) { return [x, y];}bar(); // 报错,y在声明前使用。函数作为参数:
let foo = 'outer';function bar(func = x => foo) { let foo = 'inner'; console.log(func()); // outer}bar();
以上等同于:
let foo = 'outer';let f = x => foo;function bar(func = f) { let foo = 'inner'; console.log(func()); // outer}bar();
(6) 不允许重复声明(let与let,let与var都不能同时声明一个变量)
// 报错{ let a = 10; var a = 1;}// 报错{ let a = 10; let a = 1;}
在函数内部重新声明参数是错误的:
function func(arg) { let arg; // 报错}但是增加一层块状作用域就正确了:
function func(arg) { { let arg; // 不报错 }}
二 const 命令
(1) const 也用来声明变量,但是声明的是常量。一旦声明,常量的值就不能改变
const PI = 3.1415;PI // 3.1415PI = 3;PI // 3.1415
(2) const 命令只是指向变量所在的地址,引用类型可以改变属性,只要不重新赋值即可
const foo = {};foo.prop = 123;foo.prop// 123注:想将对象冻结,应该使用 Object.freeze 方法
const foo = Object.freeze({});foo.prop = 123; // 不起作用foo //{}
三 全局对象
(1) 在浏览器环境指的是 window 对象,在 Node.js 指的是 global 对象,为了兼容性,可以使用this.
(2) ES6 规定,var 命令和 function 命令声明的全局变量,属于全局对象的属性;let 命令、const 命令、class 命令声明的全局变量,不属于全局对象的属性。
var a = 1;// 如果在node环境,可以写成global.a// 或者采用通用方法,写成this.awindow.a // 1let b = 1;window.b // undefined
阅读全文
0 0
- ES6(一)const与let
- ES6---let与const
- ES6-let 与 const
- ES6之 let与const
- ES6学习之路(一) let与const
- ES6入门let与const命令(一)
- ES6学习笔记(一)let const
- ES6(一) let和const命令
- 初学ES6(一) let和const
- # es6笔记(一):let和const
- ES6学习1(let与const)
- ES6 学习笔记 1 let与const
- ES6 let、var、const联系与区别
- es6学习笔记1-let与const
- ES6的let 与 const 的用法
- ES6学习之一let与const
- 【ES6】let和const
- es6 箭頭函數 let, const
- VBScript技巧
- 自用基础5-数组+for each
- leetcode(7) reverse integer
- IOS部分异常处理
- 292. Nim Game
- ES6(一)const与let
- 输入两棵二叉树A,B,判断B是不是A的子结构。
- HTML5基础
- POI导出Excel样式
- java每日练习-1
- JavaScript难点——立即执行函数(二)
- poj2594 Treasure Exploration【最小路径覆盖】
- springMVC数据格式转换的三种实现
- unity 遍历Asset文件夹下带有中文名的文件及PNG格式文件