Java和JavaScript(函数)参数传递是按值传递还是按引用传递?
结论:Java和JavaScript的所有(函数)参数传递都是按值传递!
1.什么是函数参数的传递是按引用传递?
什么是引用?这个概念多见于C++中,在C++中,引用解释为变量的别名。
1 #include <cstdio>
2
3 class Item
4 {
5 private:
6 int id;
7 public:
8 Item(int _id);
9 void Display();
10 ~Item();
11 };
12
13 Item::Item(int _id){this->id = _id;}
14
15 void Item::Display(){printf("Id:%d\n",this->id);}
16
17 Item::~Item(){}
18
19
20 void fun(Item& _item){//函数参数是引用。
21 Item local(200);
22 _item = local;//改变引用_item的指向对象,可以影响外部变量的指向,外部变量也将指向新对象。
23 }
24
25 int main(int argc, char const *argv[])
26 {
27 Item item(100);
28 item.Display(); //Id:100
29 fun(item);//按引用传递的函数参数,函数内部改变了引用_item的指向对象,所以这里的item指向对象也变了。
30 item.Display();//Id:200
31 return 0;
32 }
2.Java按值传递
 1 class Item{
 2
 3     private int id;
 4
 5     public Item(int id){
 6         this.id = id;
 7     }
 8
 9     public void Display(){
10         System.out.println("Id:" + this.id);
11     }
12
13 }
14
15
16 public class Main {
17
18     public static void fun(Item _item){
19        Item local = new Item(200);
20        _item = local;//函数内部改变了参数的指向,如果这里是引用,则外部的变量也将改变指向新对象。
21     }
22
23     public static void main(String[] args) {
24         Item item = new Item(100);
25         item.Display(); //Id:100
26         fun(item);
27         item.Display(); //Id:100
28     }
29
30 }
3.JavaScript按值传递
function fun(_item) {
    local = new Object;
    local.id = 200;
    _item = local;//函数内部改变了参数的指向,如果这里是引用,则外部的变量也将改变指向新对象。
} 
let item = new Object();
item.id = 100;
console.log(item); //{ id: 100 }
fun(item);
console.log(item);//{ id: 100 }
Java和JavaScript(函数)参数传递是按值传递还是按引用传递?的更多相关文章
- JavaScript函数参数传递
		
Hello,今天和大家分享下JS中的一个基本概念:函数参数传递! 先来看看一个DEMO var str="hello world"; function func(s){ s=&qu ...
 - JavaScript 函数参数传递到底是值传递还是引用传递
		
tips:这篇文章是听了四脚猫的js课程后查的,深入的理解可以参看两篇博客: JavaScript数据类型--值类型和引用类型 JavaScript数据操作--原始值和引用值的操作本质 在传统的观念里 ...
 - JavaScript中函数参数的按值传递与按引用传递(即按地址传递)
		
首先声明一句:JavaScript中所有函数的参数都是按值传递的!不存在按引用传递! 在讲传递参数之前我们先来讲一下指针. 学过C指针的应该都知道,指针变量中保存的是一个地址,程序可以根据所保存的地址 ...
 - 关于js中一个对象当做参数传递是按值传递还是按引用传递的个人看法
		
在<JavaScript高级程序设计>这本书中有这样一段话:有很多开发人员错误的认为:在局部作用域中修改的对象会在全局作用域中反映出来,就说明参数是按引用传递的.换句话说,尼古拉认为当一个 ...
 - Java 调用 Javascript 函数的范例
		
在Java 7 以后,可以在Java代码中调用javascript中的函数,请看下面的例子: package com.lee; import java.io.FileNotFoundException ...
 - Java执行JavaScript脚本破解encodeInp()加密
		
一:背景 在模拟登录某网站时遇到了用户名和密码被JS进行加密提交的问题,如图: 二:解决方法 1.我们首先需要获得该JS加密函数,一般如下: conwork.js var keyStr = " ...
 - 14.Java基础_函数/函数重载/参数传递
		
Java函数和函数重载 /* 函数定义: public static 返回类型 func(参数){ 方法体: } 函数重载 在调用时,Java虚拟机会通过参数的不同来区分同名的函数 满足: 1.多个函 ...
 - 深入理解javascript函数系列第二篇——函数参数
		
× 目录 [1]arguments [2]内部属性 [3]函数重载[4]参数传递 前面的话 javascript函数的参数与大多数其他语言的函数的参数有所不同.函数不介意传递进来多少个参数,也不在乎传 ...
 - JavaScript 函数基础
		
1. JavaScript 函数基础 1. 定义方法 2. 函数的调用方法 3. 函数方法 apply : 将函数作为数组的方法来调用 将参数以数组形式传递给该方法 call : 将函数作为对象的 ...
 
随机推荐
- 商品模型:SPU、商品、SKU概念模型设计
			
商品系统是电商SaaS.新零售SaaS最基础.最核心的系统之一.商品系统几乎需要支撑所有业务系统,商品详情.购物车.订单.履约.结算.售后.库存.供应链等,都需要依赖商品系统的能力.为了保障业务的稳定 ...
 - python的matplotlib.pyplot绘制甘特图
			
博主本来就想简单地找一下代码,画一幅甘特图,结果百度之后发现甘特图的代码基本都不是用matplotlib库,但是像柱状图等统计图通常都是用这个库进行绘制的,所以博主就花了一些时间,自己敲了一份代码,简 ...
 - MapReduce: Simplified Data Processing on Large Clusters 翻译和理解
			
MapReduce: Simplified Data Processing on Large Clusters 概述 MapReduce 是一种编程模型,用于处理和生成大型数据集的相应实现.用户定义一 ...
 - FrameScan CMS漏洞扫描
			
工具简介 GithubL:https://github.com/qianxiao996/FrameScan FrameScan是一款python3编写的简易的cms漏洞检测框架,支持多种检测方式,支持 ...
 - C#: .net序列化及反序列化 [XmlElement(“节点名称”)] [XmlAttribute(“节点属性”)] (下篇)
			
介绍 XML 序列化 .NET Framework 开发员指南 序列化是将对象转换为容易传输的格式的过程.例如,可以序列化一个对象,然后使用 HTTP 通过 Internet 在客户端和服务器之间 ...
 - SQL 语言包括哪几部分?每部分都有哪些操作关键字?
			
SQL 语言包括数据定义(DDL).数据操纵(DML),数据控制(DCL)和数据查询(DQL) 四个部分. 数据定义:Create Table,Alter Table,Drop Table, Crae ...
 - 阐述 final、finally、finalize 的区别?
			
final:修饰符(关键字)有三种用法:如果一个类被声明为 final,意味 着它不能再派生出新的子类,即不能被继承,因此它和 abstract 是反义词.将 变量声明为 final,可以保证它们在使 ...
 - java-Map集合hei
			
/* Map集合的特点: Map集合市一个双列集合,一个元素包含两个值:一个key,一个value Map集合中的元素,key和value的数据类型可以相同,也可以不同 Map集合中的元素,key不允 ...
 - Thymeleaf集成Shiro,shiro权限使用el表达式
			
如果是Thymeleaf集成Shiro的话, 如果使用Shiro在页面上权限字符串需使用thymeleaf的表达式的话, 如果权限字符串在实例级别的话, 可以使用这种方式进行权限字符串的动态实例控制 ...
 - IOC 的优点是什么?
			
IOC 或 依赖注入把应用的代码量降到最低.它使应用容易测试,单元测试不再需 要单例和 JNDI 查找机制.最小的代价和最小的侵入性使松散耦合得以实现.IOC 容器支持加载服务时的饿汉式初始化和懒加载 ...