值传递 和 引用传递。除基本类型的数据外(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来设置全局变量 。