相关疑难解决方法(0)

Java是"通过引用传递"还是"传递价值"?

我一直认为Java是传递引用的.

但是,我看过一些博客文章(例如,这个博客)声称它不是.

我不认为我理解他们所做的区别.

解释是什么?

java methods parameter-passing pass-by-reference pass-by-value

6270
推荐指数
80
解决办法
189万
查看次数

在JavaScript中深度克隆对象的最有效方法是什么?

克隆JavaScript对象的最有效方法是什么?我已经看到obj = eval(uneval(o));被使用,但这是非标准的,只有Firefox支持.

我做过类似的事情,obj = JSON.parse(JSON.stringify(o));但质疑效率.

我也看到了具有各种缺陷的递归复制功能.
我很惊讶没有规范的解决方案.

javascript clone object

5181
推荐指数
48
解决办法
189万
查看次数

如何正确克隆JavaScript对象?

我有一个对象,x.我想把它复制为对象y,这样改变y就不要修改了x.我意识到复制从内置JavaScript对象派生的对象将导致额外的,不需要的属性.这不是问题,因为我正在复制我自己的一个文字构造的对象.

如何正确克隆JavaScript对象?

javascript clone javascript-objects

2922
推荐指数
42
解决办法
176万
查看次数

传递参考与传递值之间有什么区别?

有什么区别

  1. 通过引用传递的参数
  2. 一个由值传递的参数?

你能给我一些例子吗?

language-agnostic pass-by-reference pass-by-value

539
推荐指数
11
解决办法
65万
查看次数

Javascript引用与价值

我正在寻找一些很好的综合阅读材料,当Javascript按值传递某些内容时,以及何时通过引用和修改传递的项目时会影响函数外部的值,何时不会.我还对通过引用与值分配另一个变量以及是否遵循任何不同的规则而不是作为函数参数传递感兴趣.

我已经做了很多搜索并找到了很多具体的例子(其中很多都是在SO上),我可以从中开始拼凑出真正的规则,但我还没有找到一个单一的,写得很好的文档,描述了这一切.

此外,语言中是否有方法可以控制是通过引用还是通过值传递某些内容?

以下是我想要了解的一些问题类型.这些只是示例 - 我实际上是在了解语言所遵循的规则,而不仅仅是具体示例的答案.但是,这里有一些例子:

function f(a,b,c) {
   a = 3;
   b.push("foo");
   c.first = false;
}

var x = 4;
var y = ["eeny", "miny", "mo"];
var z = {first: true};
f(x,y,z);
Run Code Online (Sandbox Code Playgroud)

对于所有不同类型,x,y和z的内容何时在f的范围之外变化?

function f() {
    var a = ["1", "2", "3"];
    var b = a[1];
    a[1] = "4";
    // what is the value of b now for all possible data types that the array in "a" might hold?
}

function f() {
    var a = [{yellow: "blue"}, {red: …
Run Code Online (Sandbox Code Playgroud)

javascript reference pass-by-reference pass-by-value

367
推荐指数
4
解决办法
28万
查看次数

Javascript是否通过引用传递?

Javascript是通过引用传递还是通过值传递?以下是Javascript:Good Parts的示例.我my对矩形函数的参数非常困惑.它实际上是undefined在函数内部重新定义的.没有原始参考.如果我从函数参数中删除它,则内部区域功能无法访问它.

是关闭吗?但是没有返回任何函数.

var shape = function (config) {
    var that = {};
    that.name = config.name || "";
    that.area = function () {
        return 0;
    };
    return that;
};
var rectangle = function (config, my) {
    my = my || {};
    my.l = config.length || 1;
    my.w = config.width || 1;
    var that = shape(config);
    that.area = function () {
        return my.l * my.w;
    };
    return that;
};
myShape = shape({
    name: "Unhnown"
}); …
Run Code Online (Sandbox Code Playgroud)

javascript reference pass-by-reference pass-by-value

340
推荐指数
8
解决办法
14万
查看次数

在Javascript中通过引用传递变量

如何在JS中通过引用传递变量?我有3个变量,我想要执行几个操作,所以我想将它们放在for循环中并对每个变量执行操作.

伪代码:

myArray = new Array(var1, var2, var3);
for (var x = 0; x < myArray.length; x++){
    //do stuff to the array
    makePretty(myArray[x]);
}
//now do stuff to the updated vars
Run Code Online (Sandbox Code Playgroud)

做这个的最好方式是什么?

javascript variables pass-by-reference

269
推荐指数
6
解决办法
35万
查看次数

在javascript中执行foreach时是否可以更改数组的值?

例:

var arr = ["one","two","three"];

arr.forEach(function(part){
  part = "four";
  return "four";
})

alert(arr);
Run Code Online (Sandbox Code Playgroud)

数组仍然是它的原始值,有没有办法从迭代函数写入数组的元素?

javascript arrays foreach pass-by-reference

261
推荐指数
6
解决办法
27万
查看次数

在React中使用setState更新对象

是否可以使用setState更新对象的属性?

就像是:

this.state = {
   jasper: { name: 'jasper', age: 28 },
}
Run Code Online (Sandbox Code Playgroud)

我试过了:

this.setState({jasper.name: 'someOtherName'});
Run Code Online (Sandbox Code Playgroud)

还有这个:

this.setState({jasper: {name: 'someothername'}})
Run Code Online (Sandbox Code Playgroud)

第一个是语法错误,第二个什么都不做.有任何想法吗?

state reactjs

211
推荐指数
10
解决办法
19万
查看次数

JavaScript:如何按值传递对象?

  • 将对象作为参数传递时,JavaScript会通过引用传递它们,并且很难创建对象的本地副本.

    var o = {};
    (function(x){
        var obj = x;
        obj.foo = 'foo';
        obj.bar = 'bar';
    })(o)
    
    Run Code Online (Sandbox Code Playgroud)

    o会有.foo.bar.

  • 通过克隆来解决这个问题是可能的.简单的例子:

    var o = {};
    
    function Clone(x) {
       for(p in x)
       this[p] = (typeof(x[p]) == 'object')? new Clone(x[p]) : x[p];
    }
    
    (function(x){
        var obj = new Clone(x);
        obj.foo = 'foo';
        obj.bar = 'bar';
    })(o)
    
    Run Code Online (Sandbox Code Playgroud)

    o不会有.foo.bar.


  1. 除了创建本地副本/克隆之外,还有更好的方法按值传递对象吗?

javascript

85
推荐指数
10
解决办法
10万
查看次数