ES6学习:第二章 let和const命令

//暂时性死区(TDZ)
let a = [];
for (var i = 0; i < 3;i ++) {
  //TDZ开始
  // i = 0;  //let声明i后,该代码块形成暂时性死区,声明之前使用都会报错
  // console.log(i); //TDZ结束
  let i = 'abc';
  console.log(i);
} //abc abc abc


//不能重复声明
function aaa(i) {
  {
    let i;
  }
}

//块级作用域
console.log('--------------------');
let temp = new Date();
function f() {
  console.log(temp);
  if(true) {
    let temp = 'hello';
  }
  console.log(temp);
}
f(); //2019-01-14T11:03:28.494Z 2019-01-14T11:03:28.494Z

//JS编译和执行顺序
console.log('------------------');
d(); //使用‘函数语句’的方式定义函数可以‘先使用,后定义’
function d() {
  console.log('aaaaaaaa')};
console.log('aaaaaaaa');

console.log('------------------');
// console.log(t())  //使用表达式定义的函数只能‘先定义,后使用’
                    // (预编译的时候,声明了变量t=undifined,执行到t()时,还不是函数 所以报错)
var t = function d() {
  console.log('aaaaaaaa');
};
console.log('aaaaaaaa');
console.log('------------------');

//块级作用域与函数声明(js作用域分为函数作用域和块级作用域)
function r() {
  console.log('outside');
}
(function () {
  console.log(r);
  if (true){
     function r() {   //对支持ES6的环境中函数声明会提升到函数作用域或块级作用域的头部(和var一样)
      console.log('inside');
    }
  }
  console.log(r);
  r();
})();
console.log('------------------');

//冻结对象
const foo = {b:{}};
Object.freeze(foo); //浅冻结
foo.a = 'a';  //静默失败
foo.b.c = 'c'; // 成功
console.log(foo);//{ b: { c: 'c' } }

//深冻结,冻结对象中的对象
const deepFreeze = (obj) => {
  Object.freeze(obj);
  Object.keys(obj).forEach((key) => {
    if (typeof obj[key] === 'object') {
       deepFreeze(obj[key]);
    }
  });
};
const foo2 = {b: {}};
deepFreeze(foo2);
foo2.a = 'a';  //静默失败
foo2.b.c = 'c'; // 静默失败
console.log(foo2); //{ b: {} }

console.log('------------------');

//全局变量
// const global = require('system.global')();
// console.log(global);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值