精读Javascript系列(二)环境记录与词法环境

前言

关于变量,在Javascript核心知识体系中,占比不重,即使有些迷惑行为,也认为Javascript本应就如此,就因为下意识的草率,导致这些小问题成了日后进阶的壁障。

这里就先从两个极为经典的问题开始吧。

变量提升和暂存死区

先来两个示例:

其一:变量提升
  console.log(typeof number);  // undefined
  var number = 1000;
  console.log(number);  // 1000

应用中,var声明的变量能够提前使用虽然只是undefined, 我们把这种现象称之为变量提升。事实上,var声明的变量奇怪之处并不只是如此,例如window.number,它返回的是1000

它声明的变量被绑定到了window全局对象上,甚至在Javascript代码中,可以允许重复声明。这又是为什么?

但是,如果我们这样使用:

  console.log(typeof isNaN); // function
  var isNaN = 1000;
  var isNaN;
  console.log(isNaN);     // 1000
  

不知有没有发现, isNaN不仅提升了,甚至有一个值当然这是来自window

总体而言, 如果说这么多的迷惑行为都是Javascript本质特征,说实话很难让人信服。

其二 暂存死区
   var a=100,b=200,c=300,d=400;
   var f = 
  • 15
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值