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…

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

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

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

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

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

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

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

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

列表优先于数组

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

原码、补码的乘除法总结

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

盲盒小程序如何搭建?

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

【网络安全】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简单三部曲 这里是参考网址,大佬可以点击一件跳转 1.安装依赖 npm install vite-plugin-mars3d --save-dev2.修改 vite.config.ts 配置文件 import { defineConfig } from vite; import { mars3dPlugin } from vite-plugin-mars3d;export d…

禁毒知识竞赛流程和规则

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

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

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

小程序接口OK,桌面调试接口不行

手机小程序OK,桌面版出现问题; 环境:iis反向url的tomcat服务,提供接口。 该接口post了一个很大的数组,处理时间比较久。 1)桌面调试出现错误,提示 用apipost调用接口同样出错, 502 - Web 服务器在作为网关或代理服…

redis:四、双写一致性的原理和解决方案(延时双删、分布式锁、异步通知MQ/canal)、面试回答模板

双写一致性 场景导入 如果现在有个数据要更新,是先删除缓存,还是先操作数据库呢?当多个线程同时进行访问数据的操作,又是什么情况呢? 以先删除缓存,再操作数据库为例 多个线程运行的正常的流程应该如下…

基于QTreeWidget实现多级组织结构

基于QTreeWidget实现多级组织结构以及带Checkbox的选择树 采用基于QWidgetMingw实现的多级组织结构树 通过QTreeWidget控件实现的多级组织结构树。 Qt相关系列文章: 一、Qt实现的聊天画面消息气泡 二、基于QTreeWidget实现多级组织结构 三、基于QTreeWidget实现带Ch…

OceanBase数据库初识

文章目录 说明分布式数据库发展发展历史OceanBase和传统数据库的对比总结 OceanBase数据库产品简介应用案例 OceanBase数据库产品OceanBase数据库内核OceanBase开发者中心(ODC)产品架构OMS核心功能简介 说明 本文仅供学习和交流学习内容参考官方的培训资…

【已解决】解决无法找到sun.misc.BASE64Encoder的jar包的解决方法

idea中可能会出现没有sun.misc.BASE64Encoder的jar包。但是64位编码却需要用到.BASE64Encoder。有以下两种方法: 错误现象: 错误原因: 1.JDK改为8(原因是/lib/tool.jar和/lib/rt.jar已经从Java SE 9中删除)&#xff…

代码随想录二刷 |二叉树 |145.二叉树的后序遍历

代码随想录二刷 |二叉树 |145.二叉树的后序遍历 题目描述解题思路代码实现递归法迭代法 题目描述 145.二叉树的后序遍历 给你一棵二叉树的根节点 root ,返回其节点值的 后序遍历 。 示例 1: 输入:root [1,null,2,…

【算法集训】基础数据结构:九、完全二叉树

完全二叉树是二叉树的一种,它是除了叶子节点外其余各节点都为满二叉树,叶子节点只在倒数第一层或第二层出现。 即使是最后一层的叶子节点也是从左到右依次排列,中间不会空。 每一层都是按从左到右的顺序编号,所以一个节点i的叶子节…