一道定义与赋值的顺序题

js 复制代码
let obj = {
  num1: 117
}
let res = obj;
obj.child = obj = { num2: 935 };
var x = y = res.child.num2;
console.log(obj.child);
console.log(res.num1);
console.log(y);

解析:

    1. let obj = { num1: 117 }

    obj 放在栈里,把 { num1:117} 放在堆里,让 obj 指向堆里的 { num1:117 }

    1. let res = obj;

    res放在栈里,把res也指向堆里的 { num1:117 }

    1. obj.child = obj = { num2: 935 };

重点:赋值操作先定义变量(从左到右),再进行赋值(从右到左)

  • 3.1定义变量: obj.child,给堆里的{ num1:117 }加一个child属性,得{num1:117,child:undefined} - 3.2 定义变量obj,之前在栈里的obj,赋值obj = { num2: 935 },把{ num2: 935 }放在堆里,把栈里的obj指向堆里的{ num2: 935 }
  • 3.3 赋值obj.child = obj,把堆里的 {num1:117,child:undefined} 的child指向 {num2: 935}

从最后一张图可看出此时:

js 复制代码
 obj = { num2: 935 }     

res = { num1: 117,child:{ num2: 935 }  }
相关推荐
記億揺晃着的那天15 分钟前
Vue + Element UI 表格自适应高度如何做?
javascript·vue.js·ui
GISer_Jing1 小时前
ByteDance——jy真题
前端·javascript·面试
真的想不出名儿1 小时前
Vue 中 props 传递数据的坑
前端·javascript·vue.js
阳光阴郁大boy1 小时前
星座运势网站技术解析:从零打造现代化Web应用
前端·javascript
sorryhc2 小时前
如何设计一个架构良好的前端请求库?
前端·javascript·架构
Queen_sy2 小时前
vue3 el-date-picker 日期选择器校验规则-选择日期范围不能超过七天
javascript·vue.js·elementui
lvchaoq2 小时前
react 修复403页面无法在首页跳转问题
前端·javascript·react.js
郝开2 小时前
6. React useState基础使用:useState修改状态的规则;useState修改对象状态的规则
前端·javascript·react.js
技术钱4 小时前
react+andDesign+vite+ts从零搭建后台管理系统(三)-Layout布局
javascript·react.js·ecmascript
DoraBigHead5 小时前
🧭 React 理念:让时间屈服于 UI —— 从同步到可中断的演化之路
前端·javascript·面试