关于js 函数修改全局变量里 修改 全局变量 的问题

关于angularjs里定义全局变量后调用使用的问题 - 跟谁学
搜索你想学的科目、老师试试,例如“语文”搜索无锡
&&关于angularjs里定义全局变量后调用使用的问题以下是我找到的定义全局变量的方法(如果有错误理解还请指出): 1,myApp.run(function($rootScope) { $rootScope.haha = 'test'; }); 2. 3.app.value(key, value) 4.app.constant(key, value) 我发现只有1和2,我能在模版中直接输出:{{haha}},但是不知道在controller里如何能调用到呢? 然后3和4,我在模版中也输出不了,更不用说在controller里了。 谢谢!似水流云Chobits
1app.controller('controller', function($scope, $rootScope) {
$scope.haha = $rootScope.haha})3/4
相关问题大家都在看最新提问
关注我们官方微信关于跟谁学服务支持帮助中心js 事件调用函数,无法修改全局变量? - 知乎1被浏览623分享邀请回答01 条评论分享收藏感谢收起JavaScript中声明全局变量三种方式的异同 - Snandy - ITeye博客
博客分类:
变量及声明变量是一门语言最基本的概念,入门者都会很快掌握。JavaScript中声明变量也是如此,很简单var(关键字)+变量名(标识符),如下:
//或var test = 5;
需注意的是该句不能包含在function内,否则是局部变量。这是第一种方式声明全局变量。下面是第二种方式:
没有使用var,直接给标识符test赋值,这样会隐式的声明了全局变量test。即使该语句是在一个function内,当该function被执行后test变成了全局变量。
第三种方式如下:
//或window.test = 5;
这种方式经常被用到一个匿名函数执行后将一些函数公开到全局。
如果只是使用变量test,那么三种方式将没有什么区别。比如:alert(test) 都将显示5。但三种方式在某些情况下还是有区别的,下面分别列出。
分别按以上三种方式声明三个变量a1,a2,a3:
var a2 = 22;
window.a3 = 33;
1,for in window对象时
for(a in window){
if(a=='a1'||a=='a2'||a=='a3'){
IE6/7/8/及IE9 pre3
:只弹出了a3,说明通过第一,二种方式声明的全局变量通过for in window对象时将获取不到(原因:
Firefox/Chrome/Safari/Opera :a1,a2,a3都弹出了,说明三种方式声明的全局变量,通过for in window对象时都能获取到。
2,delete时
alert(delete a1);
}catch(e){alert('无法delete a1')}
alert(delete a2);
}catch(e){alert('无法delete a2')}
alert(delete a3);
}catch(e){alert('无法delete a3')}
结果如下:
IE9/Firefox/Chrome/Safari/Opera
无法delete a3
可以看到,
1,delete a2所有浏览器都是false。即通过var声明的变量无法删除,所有浏览器表现一致。这在犀牛书上也有提到。
2,通过window.a3方式声明的全局变量在IE6/7/8/9中均无法删除,Firefox/Chrome/Safari/Opera中却可以。
3,IE9 pre3很奇怪,delete a1显示false,即不能delete隐式声明的全局变量。
虽然有以上两点不同,但当用in运算时,都返回true。如下
alert('a1' in window);//true
alert('a2' in window);//true
alert('a3' in window);//true
用with打开对象window闭包时,所有浏览器也表现一致,如下
with(window){
alert(a1);//11
alert(a2);//22
alert(a3);//33
浏览 19992
论坛回复 /
(15 / 6860)
浏览: 750068 次
来自: 北京
LZ 提供的链接地址失效了
LovingBaby 写道function fun() {}f ...
说的很清楚!jQuery作者为了实现简洁调用的苦心!高超的编程 ...
这不能算是任意进制之间的转换,例如二十六进制、十二进制又该如何 ...求助 在构造函数中如何修改全局变量【javascript吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:147,234贴子:
求助 在构造函数中如何修改全局变量收藏
function Block(){this.new=function(){type=type||&B1&;}this.transform=function(type){switch(type){case &B1&:type=&B2&;case &B2&:type=&B1&;}}}var b=new Block();b.transform(type);alert(type);b.transform(type);alert(type);精简后的代码
网易云课堂 零基础,零代码,一站式掌握必知必会全部技能!一线资深前端开发团队,打造前端系统化课程,助你开启新的职业生涯!
请问想做些甚麼、修改些甚麼?
代码错了var b=new Block();后面应有b.new()全局的type为什么不能在方法中修改,一直是B1
transform方法的参数是局部变量来的,这时的type不是全局变量了
this.transform=function(type){switch(type){这两行改成 this.transform=function(Type){ switch(Type){或type=&B2&;type=&B1&;这两行改成 window.type=&B2&; 和 window.type=&B1&; (不建议,因为假如 type 的 scope 改变了就会失效。)
将参数名字改一下。this.transform=function(a){switch(a){case &B1&:type=&B2&;case &B2&:type=&B1&;}你就把函数的参数,当做声明了一个函数内部局部变量考虑,你那样写的话,这个函数里面的type变量和参数type就一样了。你想改全局的type的时候,因为函数里面有了一个type了,就不会向上去找全局type了。
登录百度帐号推荐应用您还可以使用以下方式登录
当前位置:&>&&>&&>& > javascript中运用闭包和自执行函数解决大量的全局变量问题
js 闭包 全局变量 javascript中运用闭包和自执行函数解决大量的全局变量问题
但是从全局看来,这样会导致出现一些让我们难以掌控的情况的出现:变量同名、多个函数共用一个全局变量后的值的变换……等等。所以,有时候,对于一些简单的全局变量,我们可以通过另一种方式来处理——用自执行函数+闭包的方法来解: 比如:我们要在网页加载时给出一个提示,在网页关闭时给出另一个提示 下面的代码,实现了以上功能
代码如下: var msg1 = "欢迎光临!"; // 定义一个全局变量 var msg2 = "再见!" //定了另一个全局变量 window.onload = function() {   alert(msg1); } window.onunload = function() {   alert(msg2); }
这段代码中已经用到了两个全局变量。而只是为了实现一个简小的功能。 而且,全局变量太多,我们必须记住:msg1是欢迎时的变量,msg2是关闭时变量……如果变量更多,我们还能记得住吗? 下面是同样的功能,不过运用了自执行函数+闭包方法:
代码如下: (function() {   var msg = "Hello, world!";   window.onload = function() {     alert(msg);   } })(); (function() {   var msg = "Hello, world!";   window.onunload = function() {     alert(msg);   } })();
后者做法,虽然代码增长了,但是: 1)msg变量只在各自的自执行函数内有效。不会和其它全局变量之间产生混淆。 2)代码的结构变得更加的清晰。 3)解决了大量使用全局变量的情况。 以上只是本人的一点认识,希望真正的高手给出点评!
欢迎转载:
推荐:    

我要回帖

更多关于 js函数内改变全局变量 的文章

 

随机推荐