js局部变量,参数

作者: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();

 

posted @ 2014-04-30 19:30  走走停停走走  Views(243)  Comments(0Edit  收藏  举报