javascript对于全局数组或全局变量修改的疑问

JavaScript032

javascript对于全局数组或全局变量修改的疑问,第1张

这个要理解2个问题:

值传递 和 引用传递。除基本类型的数据外(string boolean number)其他都是引用类型。

引用传递的是地址 而不是值。就好像在变量和值之间有个 中间人 ,如果要把这个 变量 赋值给另一个变量,那负责传递的就是那个中间人来做的,这样2个变量都通过同一个中间人接触到值了,也就2个变量共享一个值。如果任一个要改变当前变量的值,那另一个也会知道值改变了,2个变量始终会保持一致。而值传递没有中间人,它是把值直接复制一份再给别的变量。2个变量毫无关系。

var x=[] //定义引用类型的值

var y=0 //定义值类型的值

var test=function (x,y){

this.x=x

this.y=y

}

test.prototype={

test:function(){

this.x.push(23)//当实例对象后此时 局部x 与全局的x 都指向同一个 中间人(地址),共享同 //1个最终值。

this.y++//这样alert得不到1---》alert 取的是全局的那个 y,这里是局部变量,这2个无关。

}

}

Test=new test(x,y)//传人2个全局变量,x 引用类型 y值类型

Test.test()

alert(x+""+y)//这里的x 是全局对象与Test对象内部X 共享同一个值,故能取到23,而y这里仍然是 最开始定义的全局Y=0

要实现的功能是,在ng-app中定义的全局变量,在不同的ng-controller里都可以使用。

1,通过var 直接定义global variable,这根纯js是一样的。

2,用angularjs value来设置全局变量 。

3,用angularjs constant来设置全局变量 。