美文网首页
JS函数传参

JS函数传参

作者: 捡了幸福的猪 | 来源:发表于2021-10-12 21:20 被阅读0次

js 函数调用基础知识

一个小栗子

const person = { age: 12 }
const changeAge = (person) => {
  person = { age: 20}
}
changeAge(person)
console.log(person.age)  

问输出什么呢~ person会不会更改呢(mutate)
这个问题就是 JavaScript中函数的传参类型问题~~
5分钟get这个重要的知识点吧~

基础知识

javaScript 中 包括基本类型与引用类型的数据。在js引擎中对变量的存储主要有两种位置:堆内存栈内存

  • 栈内存主要用于存储各种基本类型的变量。
  • 堆内存主要负责像对象Object这种变量类型的存储。


    堆&栈.png

分析

1、 基本类型

const age1 = 12;
const age2= age1 ;
age2= 20;
console.log(age1);  //  12 
console.log(age2);  //  20

基本类型复制的是自己在栈内存中的值

函数参数为基本类型

const age1 = 12
const changeAge = (age) => {
  age = 20
}
console.log(age1) // 12

函数参数为基本类型时是值传递.

2、引用类型

const person1 = { age: 12 }
const person2 = person1
person2.age = 20
console.log(person1.age) // 20
console.log(person2.age) // 20

引用类型复制的是自己在栈内存中的“指针”值,“指针”指向的是堆里面的数据 ; 即person1 和person2 都指向了堆中的同一个数据;

函数参数为引用类型时:

const person = { age: 12 }
const changeAge = (person) => {
  person.age = 20
}
changeAge(person)
console.log(person.age)  // 20

函数参数为引用类型时看起来好像是引用传递,但是实际是传递了“指针”这个值。

再看开头的这个🌰:

const person = { age: 12 }
const changeAge = (person) => {
  person = { age: 20}
}
changeAge(person)
console.log(person.age)  // 12

当我把 person 传进去的时候,实际是传递了“指针”(就是它的内存地址)这个值 ,并不是person 本身; 在 函数 内部更改了参数的指向, 所以内部函数的更改不能影响到外部。因此 ,函数参数传递的是内存地址这个值,函数传递参数就是按值传递的

hi~~ 是不是还比较清晰? 点个赞呗~~

相关文章

  • JS操作属性、函数

    JS操作style属性 JS操作class属性 函数 匿名函数 函数传参 作业 if练习 switch练习

  • 19-3-18 python函数传参方式

    python函数传参跟js很像: 直接传参方式: 形参实参按顺序一一对应,跟js一样 指定传参 参数顺序不用一一对...

  • 2018-12-01

    js中括号操作属性 js函数 js换肤 变量和函数预解析 匿名函数 函数传参 函数return关键字 流程控制语句...

  • JS函数传参

    js 函数调用基础知识 一个小栗子 问输出什么呢~ person会不会更改呢(mutate)这个问题就是 Jav...

  • typeScript学习02

    typescript中的函数 ts中函数定义 ts中函数的传参 ts中的函数的可选参数(js中函数的形参和实参可以...

  • 前端(十三)2

    1.js操作class 2.js中括号操作属性 3.js函数 4.变量和函数预解析 5.匿名函数 7.函数传参 8...

  • python调用js文件时,给js文件里面的函数传参

    python调用js文件时,给js文件里面的函数传参 需要Python3 安装pyexecjs js文件为: js代码

  • js函数传参类型

    声明:本文就前两天学习的 javascript函数,传参方式进行笔记; 1.按值传递 当js函数的参数是基本数据类...

  • 函数

    简单函数格式 定义 调用函数 传参函数格式: 传参数 定义 注意 重点 实例(简单) 实例(传参) 实例函数(调用...

  • arguments用法

    参考arguments指的是函数内置的实参集合JS的一个内置对象,JS传的是形参,可传可不传,若方法里没有写参数却...

网友评论

      本文标题:JS函数传参

      本文链接:https://www.haomeiwen.com/subject/rxjloltx.html