Php JavaScript通过引用传递变量
在JavaScript中,PHP的变量引用传递是否有等价物 [PHP]: function addToEnd(&$theRefVar,$str) { $theRefVar.=$str; } $myVar="Hello"; addToEnd($myVar," World!"); print $myVar;//Outputs: Hello World! 函数addToEnd(&$theRefVar,$str) { $theRefVar.=$str; } $myVar=“你好”; addToEnd($myVar,“世界!”); 打印$myVar//输出:你好,世界! 如果可能,相同的代码在JavaScript中会是什么样子 谢谢大家! 对象作为引用传递Php JavaScript通过引用传递变量,php,javascript,variables,reference,Php,Javascript,Variables,Reference,在JavaScript中,PHP的变量引用传递是否有等价物 [PHP]: function addToEnd(&$theRefVar,$str) { $theRefVar.=$str; } $myVar="Hello"; addToEnd($myVar," World!"); print $myVar;//Outputs: Hello World! 函数addToEnd(&$theRefVar,$str) { $theRefVar.=$str; } $myVar=“你好”; addToE
function addToEnd(obj,$str)
{
obj.setting += $str;
}
var foo = {setting:"Hello"};
addToEnd(foo , " World!");
console.log(foo.setting); // Outputs: Hello World!
编辑:
- 在下面的评论中,提到了一个伟大的例子李>
- 应该提到的是,在JavaScript中没有通过引用传递任何内容的真正方法。第一行已从“通过引用”更改为“作为引用”。这种变通方法只不过是你将要达到的程度(即使是全球人有时也会表现得很滑稽)
- 正如并指出的,应该区分
是对对象的引用,而该引用是通过值传递给函数的foo
function addToEnd(obj,prop,$str)
{
obj[prop] += $str;
}
var foo = {setting:"Hello"};
addToEnd(foo , 'setting' , " World!");
console.log(foo.setting); // Outputs: Hello World!
在Javascript中,没有像PHP中那样通过引用传递变量。有一种可能的解决方法来做类似的事情
function addToEnd(obj, str)
{
obj.value += str;
}
myVar={value:"Hello"};
addToEnd(myVar, " World");
alert(myVar.value); //Outputs: Hello World!
在本例中,将对象传递给函数,在函数内部修改对象(不是变量,变量仍然指向同一对象)。这就是为什么这不是通过引用传递变量,因为vol7ron的表述不正确。其他答案/注释对这种情况描述得足够好,但我认为如果您需要这种类型的功能,我会提供一个回调函数
var someText = "asd";
addToEnd(someText, "fgh", function(val) { someText = val; });
及
但更好的解决办法是
var someText = "asd";
someText = addToEnd(someText, "fgh");
及
试试这个:
// function
function func(param,callback){
if(param){
if(typeof callback=='function') {
callback.call(this,param);
}
return true;
}
return false;
}
// calling function
var variable=0;
returnValue=func(10,function(reference){variable=reference});
alert(returnValue+'/'+variable);
不,他们不是。如果是的话,那就已经行了。传递引用的值,这是不同的。这也被称为。这并不是完全错误,原语值是“按值传递的”,对于对象,我会说,引用也是按值传递的。一篇优秀的文章:“引用通过值传递”是正确的。“通过引用传递”不是。你认为它是否“接近”并不重要。它不是通过引用传递的。@Matthew Flaschen:你也要争论他所说的“在JavaScript中”是什么意思吗?通过引用传递的对象是另一回事,C#有它,你可以做“obj=new Object();”(在函数内部),这会改变obj的值(也在函数外部)。在Javascript中,这是行不通的。“你在修改对象(不是变量)”而对象不是变量?这基本上是正确的。该函数变异
obj
的字段,但不执行任何赋值。如果将其分配给obj
,则不会产生任何有用的效果。@Null该变量仍指向同一对象。它没有改变。@天哪,我只是对你的措辞有点问题。我不反对这一点。我觉得有趣的是,您提供的代码本质上是相同的,但我也从未不同意任何评论。我认为没有必要重复评论中所说的话。我想他们会同意答案。相关:在上一个函数定义中不需要setValue
参数。我们都去过:)这是一开始让我感到困惑的时候之一,主要是因为它出现在第一个示例中。现在你编辑它好多了。
function addToEnd(original, str)
{
return original += str;
}
// function
function func(param,callback){
if(param){
if(typeof callback=='function') {
callback.call(this,param);
}
return true;
}
return false;
}
// calling function
var variable=0;
returnValue=func(10,function(reference){variable=reference});
alert(returnValue+'/'+variable);