js之全局与局部坑

在js中coding的时候有个习惯,因为有许多变量是需要全局使用的,于是在A文件中头部分定义一个变量

var self = {};
self.m_num = [];

这样在A文件中所有的成员变量都在可以通过self来访问了
由于模块的不同,于是有了B文件,出于编程习惯,于是在B文件头上也定义了一个变量

var self = {};
self.m_num = 1;

此时运行程序,发现A文件中有报错,居然是在

self.m_num.push(1); 

心想不可能啊,怎么一个数组不能push。于是重新清除缓存,仍然报此错误,检查变量值,居然是1,彻底崩溃。
原来在js中只要在同一个进程,不在函数中出现的变量就是全局变量,文件模块没有区分这个变量,相当于在C中A文件定义了一个int num,在B文件中 extern一下这个变量。在js中自动帮你extern了,知道这个问题就好办了,那么self作为全局变量不用少,在每个文件中加入自己的空间。

self.area_a = {};  // A文件
self.area_b = {};  // B文件

嗯,通过爬这个坑涨了不少知识,切记下来,哪天忘了再翻出来看看

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值