es6学习笔记(let和const)

let命令

  • let变量只在它的代码块有效
{
    let b=1
}
console.log(b)//Uncaught ReferenceError: a is not defined
在for循环中,循环语句部分是一个作用域,内部又是一个作用域
for(let a=1;a<3;a++){
  let a='aaa';
  console.log(a)//'aaa','aaa'
}
  • 不存在变量提升
  • 暂死性死区
let声明变量完成前,对变量赋值会出错
  • let不允许在相同作用域内,重复声明同一个变量。

块级作用域

es中模仿块级作用域
(function(){

}())
(function(){

})()
es6中
function f1() {
  let n = 5;
  if (true) {
    let n = 10;
  }
  console.log(n); // 5
}
  • es6允许作用域任意嵌套
  • 块级作用域与函数声明
// 情况一
if (true) {
  function f() {}
}

// 情况二
try {
  function f() {}
} catch(e) {
  // ...
}
这两种情况都是不好的,该用函数表达式
// 浏览器的 ES6 环境
function f() { console.log('I am outside!'); }

(function () {
  if (false) {
    // 重复声明一次函数f
    function f() { console.log('I am inside!'); }//提升
  }

  f();
}());
// Uncaught TypeError: f is not a function

const变量

const变量一旦声明就该初始化否则出错
const foo;
// SyntaxError: Missing initializer in const declaration
constlet命令一样在块级作用域内有效,不存在变量提升
const保证变量在内存中的位置不变,所以数组对象都可以改变其中的值,但不能重新赋值

顶层对象

在浏览器中指的window,在node中为global
在es5中全局变量和顶层对象的属性是等价的
var a = 1;
// 如果在Node的REPL环境,可以写成global.a
// 或者采用通用方法,写成this.a
window.a // 1

let b = 1;
window.b // undefined
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值