深入浅析JS是按值传递还是按引用传递(推荐)
按值传递(call by value)是最常用的求值策略:函数的形参是被调用时所传实参的副本。修改形参的值并不会影响实参。 按引用传递(call by reference)时,函数的形参接收实参的隐式引用,而不再是副本。这意味着函数形参的值如果被修改,实参也会被修改。同时两者指向相同的值。 按引用传递会使函数调用的追踪更加困难,有时也会引起一些微妙的BUG。 按值传递由于每次都需要克隆副本,对一些复杂类型,性能较低。两种传值方式都有各自的问题。 JS的基本类型,是按值传递的。 var a = 1; function foo(x) { x = 2; } foo(a);
用户评论