万物皆对象,你信吗?

news2024/9/18 15:37:04

**内存空间和数据都消失,数据怎么会消失的?**空间没了,数据自然也跟着消失。因为数据就是在空间里面的。就像宇宙大爆炸,我们还能存在嘛,是不是已经undefined了。「一块小内存上有2种数据类型」

  • 内部存储的数据

  • 地址值

触碰到你的知识盲区?问题不大,来张图。1478286f0b19786c94615b855d6442c8.png现在从栈中,新建个var a = obj,那么我是将obj的内存赋给a吗?不是的,是将obj的地址值拷贝给a。那么对应上面的

  • 内部存储的数据 – 对应的是obj

  • 地址值 – obj对应的0X123

「内存分为两种」

  • 栈: 全局变量/局部变量

  • 堆: 对象

function fn(){

// obj是局部变量,同时也是栈

// { name } 该对象是堆空间

var obj = { name: ‘吖泽’ }

}

函数是在堆,函数名是在栈中。

巴啦啦变变变,什么是变量?

顾名思义,可变化的量, 由变量名和变量值组成。每个变量都对应的一块小内存, 变量名用来查找对应的内存, 变量值就是内存中保存的数据。

数据、内存、 变量三角恋关系?

内存用来存储数据的空间。变量是内存的标识。a405ecdc157cf5a20095356d50572570.png

相信看到这里对数据、内存、变量三者概念有了一定的了解了。

面试官:出道题给你热下身哈 ~

var obj1 = { name: ‘阿泽’ }

var obj2 = obj1

请问:obj2保存的是什么,obj1的地址值吗?

NO ~ NO ~ NO ~

obj2保存的是obj1的内存内容,只不过这个内存内容恰巧是地址值;

但不能直接说:保存的是就是地址值。

面试官:以下程序输出什么?99%的人都做错,不信你可以捂住答案 _

var a = {age: 12}

var b = a

a = {name: ‘BOB’, age: 13}

b.age = 14

console.log(b.age, a.name, a.age)

function fn2 (obj) {

obj = {age: 15}

}

fn2(a)

console.log(a.age)

想好了答案,往浏览器输出一下,答案自然浮出水面(看看和自己的答案对上了没_

关于引用变量赋值问题

了解上面的程序所挖掘的考点,其实是引用变量赋值的问题。有两小点,其一:**「(n)2个引用变量指向同一个对象, 通过一个变量修改对象内部数据, 另一个变量看到的是修改之后的数据」**让我们通过程序翻译一下以上文字。

var obj1 = {name: ‘Tom’}

var obj2 = obj1

obj2.age = 12

console.log(obj1.age)  // 12

function fn (obj) {

obj.name = ‘A’

}

fn(obj1)

console.log(obj2.name) //A

// obj1、obj2两个或两个以上的引用变量指向同一个对象({name: ‘Tom’});

// 通过obj2.age = 12修改对象数据,那obj1自然也看到的是修改之后的数据。

其二:**「(n)2个引用变量指向同一个对象, 让其中一个引用变量指向另一个对象, 另一引用变量依然指向前一个对象」**同样,我们通过程序翻译一下以上文字。(其实就是上头那道编程输出题)

var a = {age: 12}

var b = a

a = {name: ‘BOB’, age: 13}

b.age = 14

console.log(b.age, a.name, a.age)  // 14 Bob 13

// a、b这2个引用变量指向同一个对象({age: 12}),

// 让a重新赋值{name: ‘BOB’, age: 13},此时b指向的仍然是最初的{age: 12}

// 现在a、b指向的就是两个对象了,因为a重新赋值啦。

function fn2 (obj) {

obj = {age: 15}

}

fn2(a)

console.log(a.age) // 13

// 应该最后一个输出,很多人的答案是15吧,为什么不是15呢?

// 因为这是在fn2函数作用域内重新赋值,此次赋值是局部中,

// 一旦fn2()函数执行完,函数本身会被释放,那{ age: 15 }就灰飞烟灭

// 所以最终执行完,打印a.age还是13。

函数执行完成,函数内的局部变量就会被释放。

**「思考:fn2()和上方其一讲的例子的fn()区别」**这和上方的fn()可不一样,fn()里是obj.name可不一样,人家那是点链操作,还是改的是同一个对象。fn()是修改属性,作用在全局环境中;而fn2()是改引用对象的值,作用在局部环境中。还是懵懵懂懂嘛,上张图助你更加清晰 ~ 仔细看,你会真的懂的啦!3005b603da9b82e59c8a67571d786436.png

我们来收下尾,公布下文章的三道面试题。

面试官:var a = xxx, a内存中到底保存的是什么?

  • xxx,若是基本数据, 保存的就是这个数据

  • xxx,若是对象, 保存的是对象的地址值

  • xxx,若是一个变量, 保存的xxx的内存内容(可能是基本数据, 也可能是地址值)

面试官:在JS调用函数时传递变量参数时, 是值传递还是引用传递?

一上来跟面试官说:有可能是值传递,也有可能是引用传递。面试官默默看了手中的答案,这小伙子真™可爱,出现了答案中没有的选项。面试官刚想喷你的时候,你缓缓说道:

  • 理解1: 都是值(基本/地址值)传递

  • 理解2: 可能是值传递, 也可能是引用传递(地址值)

面试官:此话怎讲?从胸前拿出一支随身笔,写了答案的缘由

var a = 3

function fn(a){

a = a + 1

}

fn(a)

console.log(a) // 3

基础学习:

前端最基础的就是 HTML , CSS 和 JavaScript 。

网页设计:HTML和CSS基础知识的学习

HTML是网页内容的载体。内容就是网页制作者放在页面上想要让用户浏览的信息,可以包含文字、图片、视频等。

CSS样式是表现。就像网页的外衣。比如,标题字体、颜色变化,或为标题加入背景图片、边框等。所有这些用来改变内容外观的东西称之为表现。

动态交互:JavaScript基础的学习

JavaScript是用来实现网页上的特效效果。如:鼠标滑过弹出下拉菜单。或鼠标滑过表格的背景颜色改变。还有焦点新闻(新闻图片)的轮换。可以这么理解,有动画的,有交互的一般都是用JavaScript来实现的。

面上想要让用户浏览的信息,可以包含文字、图片、视频等。

[外链图片转存中…(img-ynRiBRbF-1719239182998)]

CSS样式是表现。就像网页的外衣。比如,标题字体、颜色变化,或为标题加入背景图片、边框等。所有这些用来改变内容外观的东西称之为表现。

[外链图片转存中…(img-pnL5mRei-1719239182999)]

动态交互:JavaScript基础的学习

JavaScript是用来实现网页上的特效效果。如:鼠标滑过弹出下拉菜单。或鼠标滑过表格的背景颜色改变。还有焦点新闻(新闻图片)的轮换。可以这么理解,有动画的,有交互的一般都是用JavaScript来实现的。

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

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

相关文章

使用Fiddler如何创造大量数据

在调试和分析网络流量时,您是否曾为无法深入了解请求和响应的数据而感到困惑?如果有一种工具可以帮助您轻松抓取和分析网络流量,您的工作效率将大大提升。Fiddler正是这样一款功能强大的抓包工具,广受开发者和测试人员的青睐。 Fi…

专业140+总分400+武汉理工大学855信号与系统考研经验电子信息与通信工程,真题,大纲,参考书

专业855信号与系统140,总分400,今年顺利上岸武汉理工大学,总结一下自己的复习经历,希望对报考武理工的同学有所帮助。专业课:855信号与系统 首先教材: 《信号与系统》高等教育出版社 作者:刘泉…

详解三种常用标准化 Batch Norm Layer Norm RMSNorm

参考: BN究竟起了什么作用?一个闭门造车的分析《动手学深度学习》7.5 节 深度学习中,归一化是常用的稳定训练的手段,CV 中常用 Batch Norm; Transformer 类模型中常用 layer norm,而 RMSNorm 是近期很流行…

Pyppeteer原理介绍和入门尝试

pyppeteer仓库地址:https://github.com/miyakogi/pyppeteer puppeteer仓库地址:https://github.com/search?qpuppeteer&typerepositories 因为有些网页是可以检测到是否是使用了selenium。并且selenium所谓的保护机制不允许跨域cookies保存以及登…

JavaScript的学习之事件的简介

目录 一、事件是什么 二、如何处理事件 一、事件是什么 定义:事件就是浏览器和用户之间的交互行为。 例如:点击按钮、鼠标移动、关闭窗口等。 二、如何处理事件 我们可以在对应的事件属性中设置一些JS行为,当事件触发的时候会将这些代码执行…

java的输入流FileInput Stream类

一、定义 使用InputStream类的FileInputStream子类实现文本文件内容的读取。 二、常用构造方法 三、使用FileInput Stream类按多字节读取数据 1.示例 2、分析 四、常见错误 今天的总结就到这里啦,拜拜!

Windows操作系统安装mysql数据库(zip安装包)

MySQL是目前最为流行的开放源码的数据库,是完全网络化的跨平台的关系型数据库系统,它是由瑞典MySQLAB公司开发,目前属于Oracle公司。任何人都能从Internet下载MySQL软件,而无需支付任费用,并且“开放源码”意味着任何人…

活动预告|探索 LLM 大模型的小型化 —— 微软 Phi3在 NVIDIA Jetson 与 NIM 平台的最佳实践

在当前高速发展的人工智能领域,如何高效的部署和优化 SLM (小型的大模型) 成为关键。随着微软 Phi-3 系列模型的发布,让 SLM 在 NVIDIA Jetson 边缘计算平台上的部署成为可能。同时 Phi-3 系列模型已在 NVIDIA NIM 平台提供加速的推理服务。 NVIDIA NIM…

msvcp120.dll丢失怎么办,找不到msvcp120.dll的多种解决方法

最近,我在运行一个程序时遇到了一个错误,系统提示找不到msvcp120.dll文件,无法继续执行代码。这让我感到非常困扰,因为这个问题导致我无法正常运行这个程序。经过一番搜索和尝试,我找到了几种修复这个问题的方法&#…

ONLYOFFICE 桌面编辑器 8.1重磅来袭:全新功能提升您的办公效率

文章目录 前言ONLYOFFICE 桌面编辑器8.1一、PDF编辑:告别“头痛”时刻二、幻灯片版式:秒变“设计大师”三、无缝切换:办公界的“快速通道”四、语言支持:全球通吃的“翻译官”五、 隐藏“连接到云”板块:摆脱“云”的束…

RocketMQ如何添加JVM监控

这里是小奏,觉得文章不错可以关注公众号小奏技术 JVM监控选型 本次JVM监控我们采用prometheus官方提供的jmx_exporter来实现 RocketMQJVM开发 整体目录 1. 新增agent目录 我们在distribution目录新增一个agent模块,然后添加两个文件 jmx_prometheus_javaagent-…

Mysql索引底层数据结构——Java全栈知识(28)

Mysql索引底层数据结构 1、什么是索引 索引在项目中还是比较常见的,它是帮助MySQL高效获取数据的数据结构,主要是用来提高数据检索的效率,降低数据库的IO成本,同时通过索引列对数据进行排序,降低数据排序的成本&…

低价可转债崩盘,发生了什么?

下跌不在于“出库”,甚至不在于“风险”。问题更多在于交易层面,何时能积聚更多的左侧资金并成功过渡至右侧。 低价券怎么了? 如果说6月初主要是小微盘品种的退市风险,后来是一些评级下调的品种,到本周,已…

【Godot4自学手册】第四十二节实现拖拽进行物品交换和数量叠加

这一节我们主要学习背包系统中的物品拖拽后,物品放到新的位置,或交换物品位置,如果两个物品属于同一物品则数量相加。具体效果如下: 一、修改item.tscn场景 给item.tscn场景的根节点Item添加Label子节点,命名为Numv…

【计算机视觉】人脸算法之图像处理基础知识(六)

图像直方图 图像直方图是描述图像中像素强度分布的一种统计图表,它是图像处理和计算机视觉领域中一个非常基础且重要的概念。图像直方图通常用于分析图像的亮度、对比度特性,以及在图像增强、阈值分割、特征提取等多种图像处理任务。 import cv2 impor…

HTTPS 代理的优点和缺点是什么?

HTTPS(超文本安全传输协议)作为一种基于HTTP加上SSL安全层的网络通信协议,已经成为互联网上广泛使用的IP协议之一。它在保证信息安全和隐私方面具有很多优势,但也存在一些缺点。接下来,我们就来探究一下HTTPS协议的优缺…

日牵物流装备受邀盛装亮相2024长三角快递物流供应链与技术装备展览会(杭州)

日牵物流装备受邀盛装亮相2024长三角快递物流供应链与技术装备展览会,为物流节省每一个铜板,3C馆A21与您相约! 日牵物流装备始建于1995年,总部坐落于辽宁省大连市,是一家集科研开发、生产制造、销售服务于一体的现代化…

HTML5【新特性总结】

HTML5【新特性总结】 HTML5 的新增特性主要是针对于以前的不足,增加了一些新的标签、新的表单和新的表单属性等。 这些新特性都有兼容性问题,基本是 IE9 以上版本的浏览器才支持,如果不考虑兼容性问题,可以大量使用这些新特性。…

Bootstrap和Bagging算法以及衍生算法

1. Bootstrap算法 实际上就是一种针对小样本的无放回式的抽样方法,通过方差的估计可以构造置信区间。 其核心思想和基本步骤如下:   (1) 采用重抽样技术从原始样本中抽取一定数量(自己给定)的样本&#…

今日分享:中国石油年金系统交互、视觉设计和vue开发

金融系统交互及UI设计时,需注意简洁明了、色彩合理、字体统一、交互易用、安全感和用户控制。确保用户快速理解、安全操作并提升体验。