结论: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(函数)参数传递是按值传递还是按引用传递?的更多相关文章

  1. JavaScript函数参数传递

    Hello,今天和大家分享下JS中的一个基本概念:函数参数传递! 先来看看一个DEMO var str="hello world"; function func(s){ s=&qu ...

  2. JavaScript 函数参数传递到底是值传递还是引用传递

    tips:这篇文章是听了四脚猫的js课程后查的,深入的理解可以参看两篇博客: JavaScript数据类型--值类型和引用类型 JavaScript数据操作--原始值和引用值的操作本质 在传统的观念里 ...

  3. JavaScript中函数参数的按值传递与按引用传递(即按地址传递)

    首先声明一句:JavaScript中所有函数的参数都是按值传递的!不存在按引用传递! 在讲传递参数之前我们先来讲一下指针. 学过C指针的应该都知道,指针变量中保存的是一个地址,程序可以根据所保存的地址 ...

  4. 关于js中一个对象当做参数传递是按值传递还是按引用传递的个人看法

    在<JavaScript高级程序设计>这本书中有这样一段话:有很多开发人员错误的认为:在局部作用域中修改的对象会在全局作用域中反映出来,就说明参数是按引用传递的.换句话说,尼古拉认为当一个 ...

  5. Java 调用 Javascript 函数的范例

    在Java 7 以后,可以在Java代码中调用javascript中的函数,请看下面的例子: package com.lee; import java.io.FileNotFoundException ...

  6. Java执行JavaScript脚本破解encodeInp()加密

    一:背景 在模拟登录某网站时遇到了用户名和密码被JS进行加密提交的问题,如图: 二:解决方法 1.我们首先需要获得该JS加密函数,一般如下: conwork.js var keyStr = " ...

  7. 14.Java基础_函数/函数重载/参数传递

    Java函数和函数重载 /* 函数定义: public static 返回类型 func(参数){ 方法体: } 函数重载 在调用时,Java虚拟机会通过参数的不同来区分同名的函数 满足: 1.多个函 ...

  8. 深入理解javascript函数系列第二篇——函数参数

    × 目录 [1]arguments [2]内部属性 [3]函数重载[4]参数传递 前面的话 javascript函数的参数与大多数其他语言的函数的参数有所不同.函数不介意传递进来多少个参数,也不在乎传 ...

  9. JavaScript 函数基础

    1. JavaScript 函数基础 1. 定义方法 2. 函数的调用方法 3. 函数方法 apply : 将函数作为数组的方法来调用 将参数以数组形式传递给该方法 call   : 将函数作为对象的 ...

随机推荐

  1. @weakify 与 @strongify 实现原理

    为了解决 Block 造成的循环引用,iOS 开发过程中常常使用 @weakify 与 @strongify 来解决这个问题.下面就来看下 @weakify 与 @strongify 的实现原理. 准 ...

  2. 一步一步迁移ASP.NET Core 6.0-Part2

    .NET 6 发布后,我们现有的应用会逐步升级到这个版本,首当其冲的是原因的ASP.NET Core的工程,如果一步一步升级到ASP.NET Core 6.0. 上一篇博文中,跟大家详细介绍了中间件. ...

  3. Kettle错误记录之couldn't open file XXX

    业务背景: 简单的TXT文件入库逻辑 组件: 文件文本输入,表输出 具体BUG: 这里报错是无法打开文件,在我尝试了多个思路后,最终发现了问题所在. 因为使用的txt文件的格式是Unix的,而我的文本 ...

  4. DataStage中Transformer的函数大全

    一. 类型转换函数 类型转换函数用于更改参数的类型. 以下函数位于表达式编辑器的"类型转换"类别中.方括号表示参数是可选的.缺省日期格式为 %yyyy-%mm-%dd. 以下示例按 ...

  5. linux 查看命令

    linux查找命令 ls查看文件信息 ​ 就是list的缩写,通过ls 命令不仅可以查看linux文件夹包含的文件,而且可以查看文件权限(包括目录.文件夹.文件权限)查看目录信息等等 ​ 常用参数搭 ...

  6. MSF基本使用

    MSF 链接数据库 linux查找文件 find / -name dabase.yml 链接数据库 db_connect -y path/database.yml db_status 查询数据库链接状 ...

  7. 基于long pull实现简易的消息系统参考

    我们都用过消息中间件,它的作用自不必多说.但对于消费者却一直有一些权衡,就是使用push,还是pull模式的问题,这当然是各有优劣.当然,这并不是本文想讨论的问题.我们想在不使用长连接的情意下,如何实 ...

  8. 一个关于wait/notify与锁关系的探究

    wait/notify 机制是解决生产者消费者问题的良药.它的核心逻辑是基于条件变量的锁机制处理.所以,它们到底是什么关系?wait()时是否需要持有锁? notify()是否需要持有锁?先说答案:都 ...

  9. consumer 是推还是拉?

    Kafka 最初考虑的问题是,customer 应该从 brokes 拉取消息还是 brokers 将消 息推送到 consumer,也就是 pull 还 push.在这方面,Kafka 遵循了一种大 ...

  10. Spring Bean生命周期回调方法

    参阅官方文档:https://docs.spring.io/spring/docs/current/spring-framework-reference/core.html#beans-factory ...