ES语法中所有函数的参数都是按值传递的。

探讨函数参数按值传递问题:

//1、参数被赋值为原始值
function add(num){num += 10;return num;
}
let count = 20;
let result = add(count);
console.log(result)  //30
console.log(count)  //20//2、参数被赋值为引用类型
function setName(obj){obj.name = "hihihi";obj.age = 21;obj.dream = "be better"
}
let person = {name:"加油",age:18}
//调用函数
setName(person);
console.log(person) //{name: 'hihihi', age: 21, dream: 'be better'}

这时候我们分析可能会觉得参数传参好像是引用传参。真的是这样嘛?
实际上传递了存在栈中的地址,也就是person的地址的拷贝。
不信?那我们再看一段代码

function setName(obj){obj.name = "hihihi";obj = new Object();obj.name = "今天也需要加油鸭!"
}
let person = new Object();
setName(person);
console.log(person.name) //hihihi

我们如果按照引用传递来考虑的话,obj和person变量都指向了person,在对obj进行改变的时候,person的引用也会随之改变。但是我们可以看到,person.name并没有改变,还是“hihihi”,所以我们可以确定,当函数参数为引用类型的时候,传递的为引用类型的地址拷贝,即仅仅将 person指针代表的地址值 赋值给了obj,但是后面改变obj的时候地址随之改变,指针也进行了改变,但并不会影响到person。

综上所述,函数传参是按值传递的!!!

JS中函数传参按照值传递相关推荐

  1. JS函数传参时:值传递与引用传递的区别

    JS函数传参时:值传递与引用传递的区别 一.先分析基础数据与复杂数据的区别 : 基本数据类型:Undefined.Null.Boolean.Number.String 引用数据类型:对象 如:var ...

  2. 论JS函数传参时:值传递与引用传递的区别

    JS函数传参时:值传递与引用传递的区别? 值传递:值传递的数据为基本数据类型,基本数据类型在内存中存放的是数值本身:值传递为单向传递,只能由实参传递给形参. 引用传递:引用传递的数据为复杂数据类型,复 ...

  3. C语言与java中函数传参比较

    C语言与java中函数传参比较 首先先说结论:C语言中参数传递有值传递,地址传递,引用传递.但java中的参数传递只有值传递 1.C语言中的参数传递 1>值传递 值传递非常好理解,其实就是对函数 ...

  4. go语言传参是值传递还是引用传递

    曾经在某次go面试中被面试官问到:"go中引用类型有哪些?",我答到:"slice,map,channel",面试官:"其实go没有引用类型,都是值类 ...

  5. python 内部函数传参_python中函数传参详解

    一.参数传入规则 可变参数允许传入0个或任意个参数,在函数调用时自动组装成一个tuple: 关键字参数允许传入0个或任意个参数,在函数调用时自动组装成一个dict: 1. 传入可变参数: def ca ...

  6. python函数的传参要求_python中函数传参详解

    一.参数传入规则 可变参数允许传入0个或任意个参数,在函数调用时自动组装成一个tuple: 关键字参数允许传入0个或任意个参数,在函数调用时自动组装成一个dict: 1. 传入可变参数: def ca ...

  7. 使用:js 中 url 传参

    Location 属性 操作 代码 输出结果 获取 # 号后面的字符串 window.location.hash #/lingshoustatis/?starttime=2018-11-21& ...

  8. Javascript 之《函数传参到底是值传递还是引用传递》

    前言 这个问题其实困惑了我好久,但是在实际使用中总是得过且过,不想去深究.由于这种态度,在学习 Javascript 过程中,水平一直都是出于半桶水状态,很多概念和原理似懂非懂,模糊不清. 所以,写了 ...

  9. JS一起学05:Date对象、封闭空间、函数传参和封装、获取非行间样式、字符串操作

    一.Date对象 1. 获取 oDate.getFullYear() 获取年份 oDate.getMonth()+1  获取月份 0-11----->1-12 oDate.getDate() 获 ...

最新文章

  1. 关于delete和delete[]
  2. 【转】.NET正则基础之——正则委托
  3. 开发连接mysql_VC连接Mysql及开发详细指南
  4. 可以直接用的“ html转字符串string”方法
  5. 使用Charles在iOS6上进行抓包
  6. C语言头文件深入理解
  7. js php 时间格式化字符串,JS怎么实现字符串与日期的互相转换及日期的格式化
  8. 【18】ASP.NET Core MVC 中的 Model介绍
  9. 大型网站的可伸缩性架构如何设计?
  10. Anaconda 安装教程(Win10环境) Tensorflow安装
  11. Android自定义事件总线,手写Android事件总线框架Eventbus(简易版)
  12. 兄弟打印机内存已满清零方法_兄弟打印机清零方法
  13. Git 头像修改 原
  14. 《全心全意地投入》——英文小译二【英文短篇正能量】
  15. Leetcode: Longest Valid Parentheses
  16. 开启xmp1还是2_“吃鸡”新版本倒计时1天,2个经典模式升级回归,老玩家泪目了!...
  17. dbms_xplan
  18. 做个网站要多少钱,怎么收费的?
  19. 数据中心机柜水冷系统中一次泵和二次泵哪个更好?
  20. 结对编程——《构建之法》读书笔记

热门文章

  1. 源码下载丨如何制作炫酷又高效的 3D 技能特效?带你轻松放大招!
  2. sql注释符注入防御_WAF的SQL注入绕过手段和防御技术
  3. C和CPP的区别 C++,Java and Python的区别
  4. 无线蓝牙耳机选什么品牌好?国产高性价比蓝牙耳机推荐
  5. 论文写作诚信承诺书怎么写?
  6. 机器学习(学习笔记)
  7. PHP输出缓冲区的总结
  8. C语言:输入某年某月某日,判断这一天是这一年的第几天? 以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。
  9. Matlab 使用Romberg积分法进行求解
  10. 腾讯技术分享:腾讯是如何大幅降低带宽和网络流量的(图片压缩篇)