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

news2024/11/23 23:50:15

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.coloradmin.cn/o/1316966.html

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

相关文章

物联网AI 物联网平台学习之概述

学物联网,来万物简单IoT物联网!! 万物简单IOT是一个集物联网教育、企业SaaS私有化部署的物联网服务平台,它集成了设备管理、数据安全通信、消息订阅、规则引擎等一系列物联网核心能力,支持设备数据上云以及海量设备数…

<VR串流线方案> PICO 4 Pro VR串流线方案 Oculus Quest2 Link串流线方案

虚拟现实技术(英文名称:Virtual Reality,缩写为VR),又称虚拟实境或灵境技术,是20世纪发展起来的一项全新的实用技术。虚拟现实技术囊括计算机、电子信息、仿真技术,其基本实现方式是以计算机技术为主,利用并…

UE4 Niagara学习笔记

需要在其他发射器的同一个粒子位置发射其他粒子就用Spawn Particles from other Emitter 把发射器名字填上去即可 这里Move to Nearest Distance Field Subface GPU,可以将生成的Niagara附着到最近的物体上 使用场景就是做的火苗附着到物体上

基于 WebSocket 打造聊天室

一、什么是 WebSocket? WebSocket 是一种基于TCP连接上进行 全双工 通信的协议。WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在WebSocket API中,浏览器和服务器只需要完成一次握手&#xff0c…

翻译: LLM工具使用和代理Tool use and agents

欢迎来到本周的最后一个视频。在这个视频中,我想与您分享LLM(大型语言模型)开始能够使用工具的情况,以及讨论一下前沿的“代理”主题,这是让LLM自己决定下一步采取什么行动的领域。让我们来看看。在早期的食物订单接收…

centos7安装node-v18版本

背景# 背景就是上一篇文章提到的,部署gitbook这个文档中心的话,是需要先安装node,然后,如果你的node版本过高的话,一般会报错,此时,网上很多文章就是降node版本解决,但其实用高版本…

【️如何理解面向对象和面向过程】

✅如何理解面向对象和面向过程? 典型理解✅扩展知识仓✅面向对象的三大基本特征✅封装✅继承✅多态 ✅为什么Java不支持多继承?✅菱形继承问题✅Java 8 中的多继承 ✅面向对象的五大基本原则? 典型理解 面向过程把问题分解成一个一个步骤&…

buuctf-Misc 题目解答分解85-87

85.[UTCTF2020]file header 下载完就是一个图片 ,但是显示图片错误,提示文件头 没有 用010editor 打开 找一个png 文件,看一下它的头部 只需要修改前四个字节为 89 50 4E 47 即可 就能拿到flag utflag{3lit3_h4ck3r} 86.[WUSTCTF2020]gir…

蓝桥杯专题-真题版含答案-【三角螺旋阵】【干支记年法】【异或加密法】【金字塔】

Unity3D特效百例案例项目实战源码Android-Unity实战问题汇总游戏脚本-辅助自动化Android控件全解手册再战Android系列Scratch编程案例软考全系列Unity3D学习专栏蓝桥系列ChatGPT和AIGC 👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资源分…

v851s ssh搭建与使用

ssh 概述: 1. 用来远程登录的一种安全通道协议(常用于linux 、UNIX中); 2. 分为服务端和客户端: 1)服务端即openSSH ,一般属于目标开发板(linux中配置文件路径/etc/ssh/sshd_config); 2)客户端即登录端,常用工具:sercureCRT 、MobaXterm 、Putty等; 1. ssh 服务…

Webrtc 学习交流

花了几周的时间研究了一下webrtc ,并开发了一个小项目,用来点对点私密聊天 交流传输文件等…后续会继续扩展其功能。 体验地址,大狗子的ID,我在线时可以连接测试到我 f3e0d6d0-cfd7-44a4-b333-e82c821cd927 项目特点 除了交换信令与stun 没…

Hadoop分布式配置小白篇(附加各阶段问题解决方式)

看的黑马的课,记录一下配置步骤 目录 1.VMware安装: 方法1: 方法2: 2.创建虚拟机 1.ISO镜像文件获取(CentOS): 2.创建(简略步骤) 3.克隆虚拟机(克隆伪…

Flutter在Android Studio上创建项目与构建模式

一、安装插件 1、前提条件,安装配置好Android Studio环境 2、安装Flutter和Dart插件 Linux或者Windows平台: 1)、打开File > Settings。 2)、在左侧列表中,选择"Plugins"右侧上方面板选中 "Market…

向华为学习:基于BLM模型的战略规划研讨会实操的详细说明,含研讨表单(二)

上一篇文章,华研荟结合自己的经验和实践,详细介绍了基于BLM模型的战略规划研讨会的设计和组织流程,提高效率的做法。有朋友和我私信沟通说,其实这个流程不单单适合于BLM模型的战略规划研讨会,实际上,使用其…

【C++11特性篇】C++11中新增的initializer_list——初始化的小利器(2)

前言 大家好吖,欢迎来到 YY 滴C11系列 ,热烈欢迎! 本章主要内容面向接触过C的老铁 主要内容含: 欢迎订阅 YY滴C专栏!更多干货持续更新!以下是传送门! 目录 一.探究std::initializer_list是什么…

【MyBatis-Plus】MyBatis进阶使用

目录 一、MyBatis-Plus简介 1.1 介绍 1.2 优点 1.3 结构 二、MyBatis-Plus基本使用 2.1 配置 2.2 代码生成 2.3 CRUD接口测试 三、MyBatis-Plus策略详解 3.1 主键生成策略 3.2 雪花ID生成器 3.3 字段自动填充策略 3.4 逻辑删除 四、MyBatis-Plus插件使用 4.1 乐…

【笔试强化】Day 4

文章目录 一、单选1.2.3.4.5.6.7. 二、不定项选择1.2.3. 三、编程1. 计算糖果题解:代码: 2. 进制转换题解:代码: 一、单选 1. 正确答案:D队列先进先出 A:栈有关 B:错 C:错 2. 正确…

Linux centos7安装redis 6.2.14 gz并且使用systemctl为开机自启动 / 彻底删除 redis

1.下载 && 减压 wget http://download.redis.io/releases/redis-6.2.14.tar.gz tar -zvxf redis-6.2.14.tar.gz 2.编译(分开运行) cd redis-6.2.14 make cd src make install 安装目录展示 3.redis.conf 配置更改 daemonize yes supervised s…

轻量封装WebGPU渲染系统示例<48>- 多种光源的多种组合(源码)

实现方式: 1. 全局的灯光和阴影。 2. 球体和矩形平面使用了相同的材质对象。 3. 通过材质自动关联和组装对应的渲染材质功能节点。 当前示例源码github地址: https://github.com/vilyLei/voxwebgpu/blob/feature/material/src/voxgpu/sample/MultiLightsShading2.ts 当前…

python 连接SQL server 请用pymssql连接,千万别用pyodbc

pymssql官方介绍文档 python 使用 pymssql连接 SQL server 代码示例: 安装pymssql包: pip install pymssql代码: import pymssqldef conn_sqlserver_demo():# 连接字符串示例(根据您的配置进行修改)conn Nonetry:co…