JS形参与实参问题

JavaScript016

JS形参与实参问题,第1张

例如:将全局变量作为参数传到函数内部修改之后并不影响变量自己

例如:如果定义两个名字相同的函数,不管参数个数,后面的函数会覆盖前面定义的函数:

上面的 test 函数始终调用第二个 test(obj) 函数。

没有传入的参数会被当为null和undefined处理。

按值传递(call by value)是最常用的求值策略:函数的形参是被调用时所传实参的副本。修改形参的值并不会影响实参。

按引用传递(call by reference)时,函数的形参接收实参的隐式引用,而不再是副本。这意味着函数形参的值如果被修改,实参也会被修改。同时两者指向相同的值。

按引用传递会使函数调用的追踪更加困难,有时也会引起一些微妙的BUG。

按值传递由于每次都需要克隆副本,对一些复杂类型,性能较低。两种传值方式都有各自的问题。

JS的基本类型,是按值传递的。