javascript - Javascript 输出问题
问题描述
我正在练习一些 Javascript 输出问题,遇到了一个我无法理解输出的问题。这是代码:
var foo = {n: 1};
var bar = foo;
foo.x = foo = {n: 2};
foo.x 的值是多少?
我认为它会给出{n:2,x:{n:2,x.....}}。但它的价值是不确定的。谁能向我解释为什么它的价值是不确定的
解决方案
foo
只是对对象的引用。
这条线foo.x = foo = {n: 2};
从左到右依次出现。以下是按顺序发生的步骤:
foo.x
被赋予 的值foo
,它是一个n
属性等于 1 的对象的引用。foo
然后被分配给一个新对象,{n: 2}
. 由于foo
now 引用了一个没有x
属性的新对象,因此foo.x
未定义。
但是因为bar
是对原始foo
对象的引用(在重新分配之前),所以原始对象仍然存在于内存中。这就是bar
对象同时具有x
和n
属性的原因。
推荐阅读
- java - 通过扩展 WebSecurityConfigurerAdapter,如何使用自定义身份验证逻辑构造配置
- swift - 加载完成后显示 UIImageView
- javascript - 如何在对象数组Javascript中添加随机值?
- sed - c\ 在这个命令中做了什么?
- jenkins - Jenkins 构建作业 A 使用其他构建作业 B docker 映像配置
- java - 如何在 Spring Boot Maven 项目中移动 application.properties 或执行外部属性
- python - 如何获取一维数据的集群?
- python - 在谷歌表中创建一个循环来查找价值并更新它
- spring-boot - spring-boot-starter-amqp 无法使用仅具有写入权限的用户凭据将消息发送到 AMQP 交换
- c++ - 必须为第二个 for 循环重新声明一个 int