Tom*_*Tom 5 javascript arrays object
为什么这两个脚本的行为不同?我希望使用第一个脚本,但在第二个drawData()调用中它会改变data; 这很奇怪而不是我想要发生的事情.第二个脚本没有这个问题.为什么会这样,我如何修复第一个脚本?
第一个脚本不会改变data:
var data = ["right"];
function drawData(arrs, type) {
if (type == "percentage") {
arrs[0] = "omg";
}
alert(data[0]); // Changed!?
}
drawData(data);
drawData(data, "percentage");
Run Code Online (Sandbox Code Playgroud)
第二个脚本:
var data = "right";
function drawData(arrs, type) {
if (type == "percentage") {
arrs = "omg";
}
alert(data); // OK, not changed.
}
drawData(data);
drawData(data, "percentage");
Run Code Online (Sandbox Code Playgroud)
第一个变体修改作为参数传递给函数的对象(恰好是数组) - 因此这种更改可以在函数外部看到。第二个变体为函数参数分配新值(恰好是对数组的引用),但不更改数组本身。
| 归档时间: |
|
| 查看次数: |
7418 次 |
| 最近记录: |