作者:zccst
所有函数的参数都是按值传递的。也就是说,把函数外部的值复制给函数内部的参数,就和把值从一个变量复制到另一个变量一样。
基本类型值的传递如同基本类型变量的赋值一样。
而引用类型值的传递,则如同引用类型变量的赋值一样。
不少人困惑,因为变量有按值和按引用两种方式,而参数只能按值传递。
在向参数传递基本类型和引用类型时都会复制一份。
//传递了形参 var a = [1, 2, 3]; var b = [5, 6]; function change(a,b) { var c = a; a[0] = 4; a = b; b = c; }; change(a,b); console.log(a,b); //"4,2,3" //"5,6" //没有传递形参 var a = [1, 2, 3]; var b = [5, 6]; function change() { var c = a; a[0] = 4; a = b; b = c; }; change(); console.log(a,b); //"5,6" //"4,2,3"
function test(i){ var i; alert(i);//10,上面 var i; 属于重复定义 } test(10);
var a = 100; function test() { console.log(a);//undefined var a = 10; console.log(this.a);//100 console.log(a);//10 } test();