当我开始在C++中学习函数时,它的全部传递值和参考.我们在javascript中有类似的东西吗?
如果是/不是如何在javascript的情况下工作?
谢谢大家.
jim*_*mbo 27
这个问题的其他答案都是正确的 - 所有变量都是在JavaScript中按值传递的,有时这个值指向一个对象.
当编程语言支持通过引用传递时,可以更改变量从函数内部指向的位置.这在JavaScript中是不可能的.
例如,请考虑此代码尝试将传递的变量重新分配给新值:
function changeCaller( x ) {
x = "bar"; // Ha ha!
}
function testChangeCaller() {
var x = "foo";
changeCaller(x);
alert(x); // still "foo"
}
testChangeCaller();
Run Code Online (Sandbox Code Playgroud)
尝试将变量指向新对象失败的方式与上述示例无法重新分配原始字符串的方式相同:
function changeCaller( x ) {
x = new Object(); // no longer pointing to the same object
x.a = "bar";
}
function testChangeCaller() {
var x = new Object();
x.a = "foo";
changeCaller(x);
alert(x.a); // still "foo"
}
testChangeCaller();
Run Code Online (Sandbox Code Playgroud)
导致人们相信他们正在处理引用传递方案的特征是在修改对象时.您可以对对象或数组进行更改,因为局部变量指向同一对象:
function changeCaller( x ) {
x.a = "bar";
}
function testChangeCaller() {
var x = new Object();
x.a = "foo";
changeCaller(x);
alert(x.a); // now "bar", since changeCaller worked on the same object
}
testChangeCaller();
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助!
And*_*y E 15
JavaScript总是按值传递,永远不会通过引用传递.由于对象的工作方式,很多人都对此感到困惑.
JavaScript中的任何变量都没有"通过引用传递"(不,即使将对象分配给该变量也不行).所有变量和参数都按值分配.如果指定的值是对象,则新变量的值是对该对象的引用,但是为新变量分配新值/对象不会影响原始变量.
有些人称这种行为通过"参考价值".
比较 - PHP
$foo = "foo";
$bar = &$foo; // assign by reference
$bar = "bar";
echo $foo; // -> output: "bar"
Run Code Online (Sandbox Code Playgroud)
JavaScript的
foo = {"foo": true};
bar = foo; // assign value by reference
bar = {"bar": true};
alert(JSON.stringify(foo)); // -> output: '{"foo": true}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10397 次 |
| 最近记录: |