JavaScript值类型和引用类型两道经典面试题

JavaScript值类型和引用类型两道经典面试题

  • 题目1
  • 题目2

题目1

首先,小试牛刀,请看第一道题。

let a = {x: 10
}
let b = a
a.x = 20
console.log(b.x)a = {x: 30
}
console.log(b.x)
a.x = 40
console.log(b.x);

那么上述代码输出结果是多少呢?

答案揭晓
在这里插入图片描述

思路:在内存中,基本数据类型保存在栈中,而引用数据类型是保存在堆中的。

下面详细解释一下:

  1. 首先定义一个对象a,有一个属性x,值为10,接着b=a,让a和b指向了同一个对象;
    在这里插入图片描述
  2. 接下来,a修改了对象的x属性值为20;在这里插入图片描述
  3. 然后,为a赋值了一个新的对象{ x: 30 };
    在这里插入图片描述
  4. 最后,修改了a的x属性为40。
    在这里插入图片描述
    到这里,相信大家对于输出的结果就一目了然了吧!接下来看第二道题。

题目2

let a = {n: 10
}
let b = a
a.x = a = { n: 20 }
console.log(a.x)
console.log(b.x);

废话不多说,直接上答案。
在这里插入图片描述
接下来,我们来一起分析具体过程:

  1. 首先,a指向一个对象{n:10},将a赋值给b,此时a和b都指向同一个对象;
    在这里插入图片描述
  2. 接下来来看最重要的一行代码:
a.x = a = { n: 20 }

.运算符优先于 = 号运算符,此时先执行.操作,即在a的地址内放入x属性(此处不同人有不同理解,我暂时理解为属性名不是变量,没有开辟新的空间),此时才进行赋值运算,赋值从右往左,一次赋值,即把{n:20}赋值给aa.x,此时a指向新地址{n:20},而a.x也指向新地址{n:20}
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/226516.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Spring教程30】Spring框架实战:从零开始学习SpringMVC 之 Rest风格简介与RESTful入门案例

目录 1 REST简介2 RESTful入门案例2.1 环境准备2.2 思路分析2.3 修改RESTful风格 3 知识点总结 欢迎大家回到《Java教程之Spring30天快速入门》,本教程所有示例均基于Maven实现,如果您对Maven还很陌生,请移步本人的博文《如何在windows11下安…

Flink-水位线和时间语义

Flink中的时间含义 在实际应用中,事件时间语义会更为常见。一般情况下,业务日志数据中都会记录数据生成的时间戳(timestamp),它就可以作为事件时间的判断基础。 在Flink中,由于处理时间比较简单&#xff0c…

vue 浙里办前端改造,引入jquery脚本文件并使用

在 Vue.js 项目中引入外部 JavaScript 脚本文件可以通过以下几个步骤完成&#xff1a; 1. 在你的 Vue.js 项目中的 public/index.html 文件中&#xff0c;找到 <head> 标签&#xff0c;并在其中添加如下代码&#xff0c;引入 jQuery 脚本文件&#xff1a; <script s…

中文编程工具下载,编程工具构件之复选框构件

一、前言 零基础自学编程&#xff0c;中文编程工具下载&#xff0c;中文编程工具构件之扩展系统菜单构件教程 编程系统化教程链接https://jywxz.blog.csdn.net/article/details/134073098?spm1001.2014.3001.5502 给大家分享一款中文编程工具&#xff0c;零基础轻松学编程&a…

GPM降水数据下载-Linux系统上使用wget

Linux 上如何下载GPM降水数据 图片来自&#xff1a;https://disc.gsfc.nasa.gov/datasets/GPM_3IMERGHHL_06/summary?keywordsGPM 这里以GPM30min降水数据为例&#xff0c; GPM下载链接 如果进不去&#xff0c;可能需要在这个网址上先注册个账户&#xff0c;这里不做介绍。 …

Redis 专栏、JVM 专栏、RocketMQ 专栏文章导读

深入理解 Redis 专栏文章 Redis深入理解-Socket连接建立流程以及文件事件处理机制 Redis深入理解-内核请求处理流程、数据传输协议 Redis深入理解-三次握手、槽位机制 Redis深入理解-主从架构下内核数据结构、主从同步以及主节点选举 基于社区电商的Redis缓存架构-缓存数据库双…

汽车租赁小程序源码租车小程序

汽车租赁小程序&#xff0c;多门店租车小程序&#xff0c;本套系统分为用户端&#xff0c;门店管理端&#xff0c;总管理后台三部分。门店可以加盟入驻平台。可以源码&#xff0c;也可以二次开发&#xff0c;也可以定制开发。php开发语言&#xff0c;前端是uniapp。用户端是小程…

持续集成交付CICD:Jenkins使用CD流水线下载Nexus制品

目录 一、实验 1.Jenkins使用CD流水线下载Nexus制品 一、实验 1.Jenkins使用CD流水线下载Nexus制品 &#xff08;1&#xff09;Jenkins新建CD流水线 &#xff08;2&#xff09;新建视图 &#xff08;3&#xff09;查看视图 &#xff08;4&#xff09;添加字符参数 &#xf…

列表优先于数组

在Java中&#xff0c;列表&#xff08;List&#xff09;通常优于数组&#xff0c;因为列表提供了更灵活的操作和动态调整大小的能力。下面是一个例子&#xff0c;展示了为什么在某些情况下使用列表比数组更好&#xff1a; import java.util.ArrayList; import java.util.List;…

Cmake找不到mysql.h和libmysqlclient.so

查看mysql.h和libmysqlclient.so的路径 eikeik-Virtual-Machine:~/桌面/dbpool/bin$ locate mysql.h /usr/include/mysql/mysql.h eikeik-Virtual-Machine:~/桌面/dbpool/bin$ locate libmysqlclient.so /usr/lib/x86_64-linux-gnu/libmysqlclient.so /usr/lib/x86_64-linux-g…

原码、补码的乘除法总结

CPU里的寄存器位数都是统一的 0、运算器的基本组成 包括如下几个寄存器&#xff1a; ACC&#xff1a;累加器&#xff0c;用于存放操作数&#xff0c;或运算结果MQ&#xff1a;乘商寄存器&#xff0c;在乘、除运算时&#xff0c;用于存放操作数或运算结果X&#xff1a;通用的…

业余无线电学习从入门到拿证(A证。12.23考试)(未完待续)

业余无线电从入门到拿A证一文通 欢迎提问&#xff0c;我会补充到文章中 如何学习 微信小程序&#xff1a;HAM模拟考试&#xff0c;业余无线电工具集app&#xff1a;智谱各地无线电协会网站&#xff0c;贴吧&#xff0c;搜索引擎&#xff08;不推荐&#xff0c;新手容易没有目…

盲盒小程序如何搭建?

随着移动互联网的发展&#xff0c;为了让消费者方便快捷地体验盲盒抽取乐趣&#xff0c;线上盲盒系统的开发成为了一个必要的过程。 今天本文将为大家介绍盲盒系统的搭建过程。 盲盒系统搭建过程 开发需求 在开发盲盒系统前&#xff0c;需要对盲盒市场深入分析&#xff0c;了…

分析项目需求后的ods层和dwd层建表和插入语句(全量脚本)

ods层 主要在ods干的事&#xff0c;就是根据需求将所需要的表的数据从mysql中导入到ods层中&#xff0c;所以需要在hive中建立ods层的表&#xff0c;并且在导入的时候需要根据需求过滤一下空数据&#xff0c;并在建表时加入一个dt字段记录导入的时间 ods层建表语句 1&#x…

1.1 Python的起源与发展

一、Python的起源 Python的起源可以追溯到1989年&#xff0c;当时荷兰计算机科学家Guido van Rossum在阿姆斯特丹的CWI&#xff08;荷兰计算机科学研究所&#xff09;工作。他曾参与开发过一门名为ABC的语言&#xff0c;然而这门语言并未能成为主流。因此&#xff0c;Guido va…

【Linux】面试常考可重入VS线程安全

1.重入与线程安全的概念 线程安全&#xff1a;多个线程并发同一段代码时&#xff0c;不会出现不同的结果。常见对全局变量或者静态变量进行操作&#xff0c;并且没有锁保护的情况下&#xff0c;会出现该问题。重入&#xff1a;同一个函数被不同的执行流调用&#xff0c;当前一…

【网络安全】HTTP Slowloris攻击原理解析

文章目录 Slowloris攻击的概念Slowloris攻击原理Slowloris攻击的步骤其他的DDoS攻击类型UDP FloodICMP (Ping) FloodSYN FloodPing of DeathNTP AmplificationHTTP FloodZero-day DDoS 攻击 推荐阅读 Slowloris攻击的概念 Slowloris是在2009年由著名Web安全专家RSnake提出的一…

Vue3项目中集成mars3D简单三部曲

Vue3项目中集成mars3D简单三部曲 这里是参考网址&#xff0c;大佬可以点击一件跳转 1.安装依赖 npm install vite-plugin-mars3d --save-dev2.修改 vite.config.ts 配置文件 import { defineConfig } from vite; import { mars3dPlugin } from vite-plugin-mars3d;export d…

禁毒知识竞赛流程和规则

禁毒知识竞赛是一项全国性竞赛活动。有着深化全国青少年毒品预防教育&#xff0c;巩固学校毒品预防教育成果的重要作用。本文介绍一场禁毒知识竞赛的完整流程和规则&#xff0c;供单位组织此类活动时参考。 1、赛制 第一轮10进6&#xff0c;第二轮6进4&#xff0c;4支队伍决出…

互联网大厂月薪分布:字节跳动超 5% 员工月薪高于 5 万

近期&#xff0c;某统计机构公开了国内互联网巨头的薪资分布情况。根据统计数据显示&#xff0c;贝壳、阿里、滴滴、拼多多、快手和腾讯等公司超过60%的员工&#xff0c;月薪集中在3-5万的区间。而拼多多和字节跳动更有超过5%的员工月薪超过5万。 华为&#xff0c;一个众所周知…