精读Javascript系列(四)过渡篇:左值与This绑定

前言:

总结前三篇的内容,可以将学习路线图归纳为以下:
变量与标识符 —> 词法环境与作用域 —> 词法环境与环境记录 —> 词法环境与执行上下文

执行上下文与执行栈 —> 执行栈与任务序列 —> 事件循环入门

从这个路线中可以看出,Javascript进阶的基本脉络了。每个人进阶的方法都不尽相同,不过尽可能避免知识断层或是概念套路化。否则真的,不论你尝试进阶多少次,到头来可能还是竹篮打水一场空。进阶的大部分资料都来自github大佬博客ES8标准翻译以及ES2020,博文编撰时也借鉴了不少,的确发发博客的确更容易坚持下来,哎。

言归正传,请不要忽略Javascript中的迷惑行为不要停止调戏Javascript, 举个例子,暂存死区变量提升,这两个看起来无关紧要的概念,但实际上却涉及了非常非常重要的底层知识——环境记录,诸如此类数不胜数。 总的来说就是一定要注意避免概念套路化,如果把这些迷惑行为视作死规则、死套路,你可能错过许多重要内容。

如果还没有意识到这些概念影响到什么,可以去参考比较底层的JS源代码,看不懂没关系,主要是用所学尽可能解释这些行为,解释不了自然就意味着自己进阶时不小心遗漏什么关键概念。

下面我列举了两个特殊情形,记住这种感觉。

左值

何谓左值? 这些还是要从标识符解析开始…… 简单来说它代表了内存中的可操作空间,但是Javascript中的左值稍微特别,因为它记作Lref,事实上,在Javascript较底层操作中,标识符变量是真正意义上的引用关系,正因为如此,任一标识符都能够成为左值(事实上它也能够成为右值)。


见以下代码:

  var a = {
   a:111}
  var b = a;
  a.prop =  a = {
   b:2222}
  console.log(a.prop);  // undefined
  console.log(
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值