JavaScript连续赋值运算之己见

文章看自《写了10年Javascript未必全了解的连续赋值运算》,但是讲得不清楚,自己理解如下:

代码:

var a = {n:1};  
a.x = a = {n:2};  
console.log(a.x); // undefined
console.log(a); // {n:2}

解释:

连续赋值时,先将各个变量的字面量求为各自指针,比如步骤如下:

  1. 求得变量 a 所指之处地址,我们将它表示为 ptr1,求得变量 a.x 所指之处地址,我们将它表示为 ptr2
  2. 连续赋值时,其实是从右往左,先将 ptr2 指向 {n:2} ,再将 ptr1 同样地指向 {n:2}
  3. 此时变量 a 所指之处不存在 x 这个指针,所以 a.x 将会被回收,a 所指之处只有 {n:2}

另外:

function fun(){
  var a = b = 5;
}
fun();  
console.log(a); // undefined  
console.log(b); // 5
// fun函数内的b无var修饰,所以编译时,编译器将其标记为全局变量,所以全局域内可以访问到。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 指针是C语言中广泛使用的一种数据类型。 运用指针编程是C语言最主要的风格之一。利用指针变量可以表示各种数据结构; ...
    朱森阅读 3,614评论 3 44
  • ———————————————回答好下面的足够了---------------------------------...
    恒爱DE问候阅读 1,843评论 0 4
  • 一个经常在朋友圈中扮演者中心的小A,无论何时,只要他发起一个活动和话题大家都积极响应,可谓是一呼百应。 一个自以为...
    哈尔的家阅读 291评论 0 2
  • 大家好,我是悠贝深圳保利馆馆长苟苟老师。 今天为大家分享的是一本2001年获得凯迪克银牌奖的绘本《奥莉薇》—— 一...
    苟苟的脚步_绘本与成长阅读 1,400评论 0 3
  • 前几天,我哥哥和他妈妈大吵了一架,之后,便陷入了冷战之中。 原因很简单,我哥哥起床晚了,因为那天要考试,所以他妈妈...
    柳思吟sweet阅读 304评论 0 1

友情链接更多精彩内容