JS中的函数都是按值传递的

1.传递参数是基本类型

如例子:基本类型传入函数后,函数内部参数生成一个参数副本,把num变量的值赋给num参数,num参数再去参与函数中的运算,但不会影响外面num变量的值。

	<script>
var num= 10;
changeNum(num); function changeNum(num){
num++;
console.log(num); //11
} console.log(num); //10
</script>

2,引用类型(一个对象)当作参数传入函数后呢?  

例一:当调用函数时,把per的内存地址传递给setName的参数obj,这时候obj和per都指向一个对象,obj给对象新增了一个name属性,per同样也能使用该属性。

function setName(obj){
obj.name = 'Helen';
}
var per = new Object();
setName(per);
console.log(per.name) //Helen

 例二:再来个复杂点的例子

首先定义两个函数,第一个函数是Person构造函数

  1. 第一句通过构造函数Person实例化一个对象per,这个对象的name属性是小强
  2. 第二句调用f1函数,把per这个内存地址传递给f1的参数obj,这样obj和per都指向了同一个对象
  3. 然后obj修改该对象的name属性为小明,于是per的name属性也变成了小明。
  4. obj重新指向一个新的实例化对象,它的name属性值是“小红”,这个对象和上一个没有任何关系(这句是用来迷惑我们的)。
	<script>
function Person(name,age){
this.name = name;
this.age = age;
} function f1(obj){
obj.name = '小明';
obj= new Person('小红',18);
} var per = new Person('小强',20);
console.log(per.name); //小强
f1(per);
console.log(per.name); //小明
</script>

  

 

JS-04 JS中的函数都是按值传递的的更多相关文章

  1. Javascript 基础知识学习--javascript中的参数传递都是按值传递的

    ECMAScript中所有函数的参数传递都是按值传递的,无论参数是值类型还是引用类型的.过去我跟大多数人一样觉得跟传值类型相关. 自己写了一个测试的例子,确实如此 function add(a) { ...

  2. 前端之js中的函数

    函数 函数就是重复执行的代码片.   函数定义与执行 <script type="text/javascript">     // 函数定义     function ...

  3. JS OOP -02 深入认识JS中的函数

    深入认识JS中的函数: 1.概述,认识函数对象 2.函数对象和其他内部对象的关系 3.将函数作为参数传递 4.传递给函数的隐含参数:arguments 5.函数的apply,call方法和length ...

  4. js中的全局变量和静态变量的使用, js 的调试?- 如果js出错, js引擎 就会停止, 这会 导致 后面的 html中 refer 该函数时, 会报错 函数为定义!!

    效果里面的函数, 如show, hide,slideDown等, 这些都叫 "效果"函数, 但是里面可以包含动画, 也可以 不包含动画. 动画,是指 元素 的内容 是 逐渐 显示/ ...

  5. FLASH CC 2015 CANVAS (二)html中写JS调用flash中的元件、函数、变量

    注意 此贴 为个人边“开荒”边写,所以不保证就是最佳做法,也难免有错误! 正式教程会在后续开始更新 当你导出第一个canvas后,你会在保存fla的文件夹里 (每个项目默认位置)看到 如下文件,(请先 ...

  6. JS中的函数,Array对象,for-in语句,with语句,自定义对象,Prototype

    一)函数 A)JS中的函数的定义格式: function add(a,b) { var sum = a+b; document.write("两个数的和是:" + sum); // ...

  7. js中的函数,Date对象,Math对象和数组对象

    函数就是完成某个功能的一组语句,js中的函数由关键字 function + 函数名 + 一组参数定义;函数在定义后可以被重复调用,通常将常用的功能写成一个函数,利用函数可以使代码的组织结构更多清晰. ...

  8. js中getByClass()函数

    js中getByClass()函数进化史 对于js来说,我想每一个刚接触它的人都应该会抱怨:为什么没有一个通过class来获取元素的方法.尽管现在高版本的浏览器已经支持getElementsByCla ...

  9. JS中的函数、Bom、DOM及JS事件

    本期博主给大家带来JS的函数.Bom.DOM操作,以及JS各种常用的数据类型的相关知识,同时,这也是JavaScript极其重要的部分,博主将详细介绍各种属性的用法和方法. 一.JS中的函数 [函数的 ...

随机推荐

  1. [python 学习] requests 库的使用

    1.get请求 # -*- coding: utf-8 -*- import requests URL_IP = "http://b.com/index.php" pyload = ...

  2. bzoj4002 [JLOI2015]有意义的字符串 特征根+矩阵快速幂

    题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=4002 题解 神仙题. 根据下面的一个提示: \[ b^2 \leq d \leq (b+1)^ ...

  3. python——解释型语言

    编程语言分三大类   :  低级语言  .  汇编语言 .   高级语言. 现代计算机都是基于  图灵机模型 制造的.  因此计算机的内部只能接受二进制数据.而用二进制代码  0  1  描述的指令叫 ...

  4. php next()函数 语法

    php next()函数 语法 作用:将内部指针指向数组中的下一个元素,并输出.直线电机滑台 语法:next(array) 参数: 参数 描述 array 必需.规定要使用的数组. 说明:在返回值之前 ...

  5. php中美元符号是什么意思

    php中$符号是变量符号: 把$符号加上字符串,这个字符串就是一个变量名或对象名. 其实PHP采用的是C语言的语法,但是也有一些区别,$符号加上字符串,这就是一个变量名或对象名. 例如下面的代码:(推 ...

  6. Android逆向之旅---基于对so中的函数加密技术实现so加固

    一.前言 今天我们继续来介绍so加固方式,在前面一篇文章中我们介绍了对so中指定的段(section)进行加密来实现对so加固 http://blog.csdn.net/jiangwei0910410 ...

  7. 解决 canvas 在高清屏中绘制模糊的问题

    主要代码部分: <canvas id="my_canvas" width="540" heihgt="180"></can ...

  8. Spring Boot 的单元测试

    Spring Boot 的单元测试 引入依赖 testCompile group: 'org.springframework.boot', name: 'spring-boot-starter-tes ...

  9. s6tu

    # -*- coding: utf-8 -*- # @Time : 2018/03/30 15:20 # @Author : cxa # @File : liuuchnagtu.py # @Softw ...

  10. 台哥原创:java 俄罗斯方块源码

    大四的时候,用java开发,耗时一周 界面参照当时用的联想手机里的俄罗斯方块 ​ 这里的级别,标识难度,1是初级,方块下降速度很慢,5是最高级,下降速度最快 ​ 得分:每消除一行,会给10分,同时消除 ...