Javascript中引用类型传递的知识点小结

yizhihongxing

JavaScript 中,基本类型的值(number、string、boolean、null、undefined)是按值传递的,也就是说改变一个变量的值不会影响另一个变量的值。而引用类型的值(object、array、function)则是按引用传递的,也就是说改变一个变量的值会同时改变另一个变量的值。接下来对引用类型传递的知识点进行详细讲解:

引用类型传递的基本原理

引用类型的值在 JavaScript 中作为对象来处理。不同于基本类型的值,引用类型的值在赋值时复制的是指向对象的引用,而非所有的对象数据。比如:

let person1 = {
  name: 'Tom',
  age: 20
}
let person2 = person1
person2.name = 'Jerry'

console.log(person1.name) // => 'Jerry'

在这个示例中,我们创建了一个 person1 对象,它有一个 name 属性和一个 age 属性。然后将 person1 赋值给 person2,在修改 person2name 属性后,发现 person1name 属性也被修改了。这是因为在修改 person2name 属性时,实际上修改的是存储在堆内存中的 person1 对象。因此在 JavaScript 中,当我们传递一个引用类型的值作为参数时,实际上传递的是指向该对象的引用,而该对象可能会在函数内部被修改。

引用类型传递的应用:函数参数的传递

由于函数参数的传递方式是以值的形式传递的,因此传递一个对象时,传递的实际是指向该对象的引用。在函数内部修改对象时,实际修改的是对象的属性,且该对象的引用保持不变。比如:

function changeName(person) {
  person.name = 'Lucy'
}

let person1 = {
  name: 'Tom',
  age: 20
}
changeName(person1)

console.log(person1.name) // => 'Lucy'

在这个示例中,我们定义了一个 changeName 函数,该函数接受一个对象作为参数,并将对象的 name 属性修改为 Lucy。然后创建了一个 person1 对象,并将其传递给 changeName 函数,发现在函数执行后,person1name 属性也被修改成了 Lucy

引用类型传递的应用:数组操作

由于在 JavaScript 中,数组也属于引用类型,因此在操作数组时传递的也是数组的引用。如果将一个数组作为函数参数传递给另一个函数,该函数可能会更改数组中的值。比如:

function changeArray(array) {
  array[1] = 3
}

let arr1 = [1, 2, 4]
changeArray(arr1)

console.log(arr1) // => [1, 3, 4]

在这个示例中,我们定义了一个 changeArray 函数,该函数接受一个数组作为参数,并将数组中第二个元素修改为 3。然后创建了一个 arr1 数组,并将其传递给 changeArray 函数,发现在函数执行后,arr1 的第二个元素也被修改成了 3

总结

在 JavaScript 中,引用类型的值是按引用传递的。当我们将一个引用类型的值作为函数参数传递时,传递的是指向该对象的引用,而该对象可能会在函数内部被修改。因此我们需要特别注意在函数内部对引用类型进行修改时,可能会对传递该值的变量造成影响。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Javascript中引用类型传递的知识点小结 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • javascript 当前日期加(天、周、月、年)

    下面是关于”javascript 当前日期加(天、周、月、年)”的详细攻略。 1. 获取当前日期对象 在处理日期的时候,首先需要获取到当前的日期对象,然后再进行加减日期的操作。可以通过JavaScript提供的内置Date对象,来获取当前的日期。 let currentDate = new Date(); console.log(currentDate); …

    JavaScript 2023年5月27日
    00
  • 使用cookie绕过验证码登录的实现代码

    首先,在介绍使用cookie绕过验证码登录的实现前,有必要了解一下什么是cookie。 什么是cookie 在前后端分离的web应用中,一般使用cookie来维持用户的登陆状态,如购物车、身份认证、页面交互等。cookie是一种储存在用户浏览器中的小型文本文件,通常包含一些用于搜索查询、网站记住用户信息、统计网站访问数量和收集访客习惯数据等等。具体实现方式是…

    JavaScript 2023年6月11日
    00
  • js基础之DOM中元素对象的属性方法详解

    JS基础之DOM中元素对象的属性方法详解 什么是DOM? DOM,即文档对象模型(Document Object Model)。在网页中,每个标签都可以看做是一个对象,这些对象被组织在一起形成了DOM树形结构。通过JS可以对DOM树进行访问和操作,从而实现网页的动态效果和交互。 元素对象 在DOM中,标签被称为元素,每个元素都是一个对象,我们可以通过JS来操…

    JavaScript 2023年5月27日
    00
  • javascript实现弹出层效果

    实现弹出层效果通常使用javascript的模态框(Modal)实现。以下是步骤: 步骤一:构建HTML结构 为弹出层准备一个HTML结构,该结构包括带有唯一标识符的背景层和弹出层本身。如下所示: <div id="overlay"> <div id="popup"> <h2>这是弹…

    JavaScript 2023年6月11日
    00
  • 详解Vuex管理登录状态

    详解Vuex管理登录状态 Vuex是一个专门为Vue.js应用程序开发的状态管理库,它能够用来管理整个应用程序的状态。其中包括登录状态的管理。下面将详细讲解如何使用Vuex来管理登录状态。 步骤一:安装Vuex 首先需要使用npm或yarn安装Vuex。使用npm安装的命令如下: npm install vuex –save 步骤二:创建Vuex Stor…

    JavaScript 2023年6月11日
    00
  • Vue Element前端应用开发之echarts图表

    让我来为你分享一下“Vue Element前端应用开发之echarts图表”的完整攻略。 一、背景介绍 在现代化的前端应用开发中,图表展示是一个非常重要的功能。而echarts作为一种非常强大的数据可视化库,广泛应用于各种Web应用的开发,成为了前端数据可视化的重要工具。本文将通过Vue Element前端应用开发来讲解如何使用echarts实现图表的展示。…

    JavaScript 2023年6月10日
    00
  • 利用JavaScript制作一个搞怪的兔子动画效果

    制作一个搞怪的兔子动画效果需要使用JavaScript和CSS。以下是具体的步骤: 实现步骤 1. 创建网页 首先,需要创建一个网页,可以使用HTML来实现。在网页中,需要有一个用来承载兔子动画效果的容器,例如: <!DOCTYPE html> <html> <head> <title>搞怪的兔子动画效果&lt…

    JavaScript 2023年6月10日
    00
  • javascript中数组array及string的方法总结

    JavaScript中数组(Array)及字符串(String)方法总结 在JavaScript中,数组以及字符串是非常重要的数据结构,同时也拥有很多的内置方法可以简化我们的开发流程。接下来将带你了解这些方法。 字符串(String)方法 1. indexOf 返回某个指定的子字符串在字符串中第一次出现的位置。 const str = "Hello…

    JavaScript 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部