根本数据类型传递形式
因为 js 中存在 简单类型 和根本类型 ,对于 根本类型 而言,是按值传递的
var a = 1;
function test(x) {
x = 10;
console.log(x);
}
test(a); // 10
console.log(a); // 1
尽管在函数 test
中 a
被批改, 并没有有影响到 内部 a
的值, 根本类型是按值传递的.
简单类型按援用传递?
咱们将内部 a
作为⼀个对象传⼊ test
函数.
var a = {a: 1, b: 2};
function test(x) {
x.a = 10;
console.log(x);
}
test(a); // {a: 10, b: 2}
console.log(a); // {a: 10, b: 2}
能够看到, 在函数体内被批改的 a
对象也同时影响到了内部的 a
对象, 可⻅简单类型是按 引⽤传递 的.
可是如果再做⼀个试验:
var a = {
a: 1,
b: 2
};
function test(x) {
x = 10;
console.log(x);
}
test(a); // 10
console.log(a); // {a: 10, b: 2}
内部的 a
并没有被批改, 如果是按引⽤传递的话, 因为共享同⼀个堆内存, a
在内部也会体现为 10
才对. 此时的简单类型 同时体现出了 按值传递
和按引⽤传递
的个性