美文网首页前端开发攻城狮
求值策略:按值传递 & 按引用传递

求值策略:按值传递 & 按引用传递

作者: 未来与传说 | 来源:发表于2018-01-16 22:06 被阅读0次

按引用传递(call by reference)

函数所传的参数,形参不再是实参的副本,而是实参的隐式引用,此时修改形参的值,实际上就会影响到实参的值

按值传递 (call by value)

常见的函数的形参是被调用时所传实参的副本。修改形参的值并不会影响到实参

var a = 1;
function test(x){
  x = 10
}
test(a);
// a 是实参, x是形参即a的副本
// 修改了x的值并不会影响到a

在JavaScript的世界里有这样一种情况,形参传递对象。

var obj = {a:1};
function test(opt){
  opt.a = 10; //修改属性值 
  opt.c = 20; //新增属性值 
  opt = 100;
}
test(obj);

此时 opt 作用形参,并且传递一个对象实参,修改了形参的属性opt.a或新增了属性opt.c,则解释器会认为 opt 是隐式传参,即引用传递所以此时obj输出为 {a:10};
但是,如果将opt以基本类型(不可变)赋值opt=100那么此时解释器会认为opt是按值传递,所以opt不会影响到外部的obj对象

据说,coder们给了它一个高大上的称呼叫:按共享传递

javascript都是按值传递方式

相关文章

  • 求值策略:按值传递 & 按引用传递

    按引用传递(call by reference) 函数所传的参数,形参不再是实参的副本,而是实参的隐式引用,此时修...

  • 按值传递和按引用传递

    按值传递 VS. 按引用传递 按值传递(call by value)是最常用的求值策略:函数的形参是被调用时所传实...

  • JS是按值传递还是按引用传递?

    JS是按值传递还是按引用传递? 按值传递 VS. 按引用传递 探究JS值的传递方式 按共享传递 call by s...

  • Java中的参数传递

    为了便于理解,会将参数传递分为按值传递和按引用传递。按值传递是传递的值的拷贝,按引用传递传递的是引用的地址值,所以...

  • 再学JS--函数参数传递类型

    JavaScript的函数参数传递分为按值传递、按引用传递以及按共享传递。 按值传递 什么是按值传递? 把函数外部...

  • 按值传递、按引用传递、按共享传递

    按值传递、按引用传递、按共享传递 按值传递(call by value) 按值传递,就是指在调用函数时,将实参对应...

  • Dart是值传递还是引用传递

    结论:Dart是值传递。 我们先看值传递和引用传递的定义: 值传递和引用传递,属于函数调用时参数的求值策略(Eva...

  • 方法参数

    一、参数传递 1.参数传递有两种类型:按值传递和按引用传递。 2.按值传递指变量使用的是参数传递的值,而按引用传递...

  • 聊聊Java内部类

    一.磨叽磨叽Java值传递与引用传递 “在Java里面参数传递都是按值传递”即:按值传递是传递的值的拷贝,按引用传...

  • Java值传递

    “在Java里面参数传递都是按值传递”这句话的意思是:按值传递是传递的值的拷贝,按引用传递其实传递的是引用的地址值...

网友评论

    本文标题:求值策略:按值传递 & 按引用传递

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