万物皆对象,你信吗?

**内存空间和数据都消失,数据怎么会消失的?**空间没了,数据自然也跟着消失。因为数据就是在空间里面的。就像宇宙大爆炸,我们还能存在嘛,是不是已经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.mzph.cn/pingmian/34540.shtml

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

相关文章

Trilium Notes浏览器插件保存网页内容到docker私有化部署

利用Trilium浏览器插件可以很方便的把网页内容保存到Trilium,需要先在docker部署好trilium,还没有部署的可以先看这篇文章:trilium笔记私有化部署-www.88531.cn资享网 1.下载Trilium浏览器插件:https://www.npspro.cn/33462.html…

高考志愿填报秘籍:工具篇

选择适合自己的大学和专业,对广大考生来说至关重要。从某种程度上来说,决定了考生未来所从事的行业和发展前景。为了帮助广大考生更加科学、合理地填报志愿,选择适合自己的大学和专业,本公众号将推出如何用AI填报高考志愿专栏文章…

华为200人园区网有线和无线

实验描述: 1 内网有有线业务、内部无线、外部无线三种业误。 2 内网服务器配置静态IP,网关192.168.108.1。 3 sW1和R1之间使用v1an200 192.168.200.9/30 互联。 4 R2向运营商申请企业宽带并获得了1个固定公网IP: 200.1.1.1 子网掩码 255.255.…

Hyperf 在 NginxProxyManager 如何配置 websocket?

新建代理 填写域名等服务信息&#xff0c;选择支持WebSockets。 创建 SSL 编写nginx配置 location /message.io{proxy_pass http://<你的ip>:<对应端口号>;proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection "Upg…

最新《pvz植物大战僵尸杂交版》整合安装包,全面支持Android、ios、Windows,附教程!

今天&#xff0c;阿星要聊聊最近全网大火的一款老游戏——《植物大战僵尸》杂交版。 虽然它不是什么3A大作&#xff0c;但在阿星的心里&#xff0c;它永远是那个让人回味无穷的经典。记得十年前&#xff0c;阿星和大多数玩家一样&#xff0c;玩的都是盗版。那时候的《植物大战…

MES管理系统中的仓库管理功能有哪些用途

在当今制造业迅猛发展的背景下&#xff0c;企业对于车间生产调度的需求日益迫切。为此&#xff0c;MES管理系统应运而生&#xff0c;它作为一款专注于车间生产调度的管理信息系统&#xff0c;正逐步成为制造业提升生产效率、优化资源配置的利器。特别是其在仓储和物流管理方面的…

代码随想录-Day38

509. 斐波那契数 斐波那契数 &#xff08;通常用 F(n) 表示&#xff09;形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始&#xff0c;后面的每一项数字都是前面两项数字的和。也就是&#xff1a; F(0) 0&#xff0c;F(1) 1 F(n) F(n - 1) F(n - 2)&#xff0c;其中 …

01 Swift 基础语法(变量,常量,注释,整数,浮点数,元组)

Swift 介绍 Swift 是一门用于开发 iOS、macOS、watchOS 和 tvOS 应用的新编程语言。它以安全、快速和互动的特点而著称。Swift 提供了代码预览&#xff08;playgrounds&#xff09;功能&#xff0c;使程序员可以在不编译和运行应用程序的情况下&#xff0c;实时运行 Swift 代码…

Python web 开发 flask 实践

1、前言 前文已经介绍了很多关于 python 的算法和脚本的写法&#xff0c;在本文将开启python的 web 的开发&#xff0c;和java 类似的&#xff0c;对于 web 开发也需要引入框架&#xff0c;对于 python 的 web 开发来说常见的有 flask 和 django 两种&#xff0c;在本文中将要…

vscode用vue框架1写一个登陆页面

目录 一、创建登录页面 二、构建好登陆页面的路由 三、编写登录页代码 1.添加基础结构 2.给登录页添加背景 3.解决填充不满问题 4.我们把背景的红颜色替换成背景图&#xff1a; 5.在页面中央添加一个卡片来显示登录页面 6.设置中间卡片页面的左侧 7.设置右侧的样式及…

华芯微特SWM34-使用定时器捕获快速解码EV1527编码

在无线应用领域&#xff0c;很多433Mhz和315Mhz的遥控器&#xff0c;红外探测器&#xff0c;门磁报警器&#xff0c;无线门铃等都使用EV1527编码格式来发射数据。发射和接收均有对应的RF芯片完成&#xff0c;而且成本极低&#xff08;目前市场价3毛钱不到&#xff09;。接收芯片…

复分析——第7章——ζ 函数和素数定理(E.M. Stein R. Shakarchi)

第7章 ζ函数和素数定理 Bernhard Riemann, whose extraordinary intuitive powers we have already mentioned, has especially renovated our knowledge of the distribution of prime numbers, also one of the most mysterious questions in mathematics. He has tau…

《中国尘肺病农民工调查报告(2023)》

这份报告由中华社会救助基金会大爱清尘基金发布。 《中国尘肺病农民工调查报告(2023)》是一份深入探讨中国尘肺病农民工现状与挑战的研究报告。报告不仅详细记录了尘肺病患者的生存困境、经济与医疗状况,还对政策的实施效果进行了评估,并提出了针对性的建议。通过对不同地区、…

Vitis Accelerated Libraries 学习笔记--Vision 库介绍

目录 1. 简介 2. 分类介绍 2.1 图像容器 2.2 图像处理基础 2.3 图像滤波和平滑 2.4 图像变换和增强 2.5 图像分析和特征检测 2.6 数学和算术操作 2.7 图像校正和优化 2.8 颜色和阈值处理 2.9 高级图像处理 2.10 光流和运动估计 2.11 图像转换和映射 2.12 其他特殊…

Android Media Framework(八)OMXNodeInstance - Ⅰ

OpenMAX框架的学习有两大难点&#xff0c;一是组件的状态切换与buffer的流转过程&#xff0c;这部分内容我们已经在IL Spec中学习过了&#xff1b;二是OMX组件使用的buffer类型与buffer分配过程&#xff0c;这一节我们来重点剖析OMX组件使用的buffer类型。 1、引言 在实际应用…

业务架构交付物

背景 业务的核心元素、扩展元素以及它们的协同关系&#xff0c;业务架构和其他架构的关系等等已经有了不少认识&#xff0c;那么&#xff0c;通过对业务架构的还原和分析&#xff0c;到底能够得到什么业务架构的内容呢&#xff1f;它可以是一套流程框架体系&#xff0c;也可以…

探索约束LLM输出JSON的应用

0、 引言 JSON&#xff08;JavaScript Object Notation&#xff09;因其简洁、易读和易于解析的特性&#xff0c;已成为全球使用最广泛的数据交换格式之一。它能够满足各种数据交换需求&#xff0c;特别是在构建人工智能驱动的应用程序时&#xff0c;工程师们经常需要将大型语…

深度学习工具|LabelImg(标注工具)的安装与使用教程

1 简介 Label是一款免费的图像标注软件&#xff0c;可以以矩形框的形式对图像中的物体进行标记&#xff0c;常用于分类和目标检测。并可以将标记信息保存为PasclVOC&#xff08;xml&#xff09;、YOLO&#xff08;txt&#xff09;、CreateML&#xff08;json&#xff09;格式。…

Python中对含有转义字符的变量,如何处理

file_path C:\Users\EDY\PJ-IPAStudio\designer\project 这是一个路径的字符串&#xff0c;要访问这个路径下的文件&#xff0c;是会报错的 file_path rC:\Users\EDY\PJ-IPAStudio\designer\project 需要在前面添加 r 如果他是一个变量&#xff0c;如何对变量里的字符修改呢&…

0802功放2

功放要记一般的式子&#xff0c;而非最大的式子&#xff0c;因为总不能总开到最大音量上工作&#xff0c;而是在比较合适的音量上工作 运放的最大电压也是比电源低1~2V 饱和三极管的功率&#xff0c;电流越大&#xff0c;饱和压降越大&#xff1f;&#xff1f;&#xff1f;不…