js之全局与局部坑
2015-12-01 15:46
363 查看
在js中coding的时候有个习惯,因为有许多变量是需要全局使用的,于是在A文件中头部分定义一个变量
这样在A文件中所有的成员变量都在可以通过self来访问了
由于模块的不同,于是有了B文件,出于编程习惯,于是在B文件头上也定义了一个变量
此时运行程序,发现A文件中有报错,居然是在
心想不可能啊,怎么一个数组不能push。于是重新清除缓存,仍然报此错误,检查变量值,居然是1,彻底崩溃。
原来在js中只要在同一个进程,不在函数中出现的变量就是全局变量,文件模块没有区分这个变量,相当于在C中A文件定义了一个int num,在B文件中 extern一下这个变量。在js中自动帮你extern了,知道这个问题就好办了,那么self作为全局变量不用少,在每个文件中加入自己的空间。
嗯,通过爬这个坑涨了不少知识,切记下来,哪天忘了再翻出来看看
[code]var self = {}; self.m_num = [];
这样在A文件中所有的成员变量都在可以通过self来访问了
由于模块的不同,于是有了B文件,出于编程习惯,于是在B文件头上也定义了一个变量
[code]var self = {}; self.m_num = 1;
此时运行程序,发现A文件中有报错,居然是在
[code]self.m_num.push(1);
心想不可能啊,怎么一个数组不能push。于是重新清除缓存,仍然报此错误,检查变量值,居然是1,彻底崩溃。
原来在js中只要在同一个进程,不在函数中出现的变量就是全局变量,文件模块没有区分这个变量,相当于在C中A文件定义了一个int num,在B文件中 extern一下这个变量。在js中自动帮你extern了,知道这个问题就好办了,那么self作为全局变量不用少,在每个文件中加入自己的空间。
[code]self.area_a = {}; // A文件 self.area_b = {}; // B文件
嗯,通过爬这个坑涨了不少知识,切记下来,哪天忘了再翻出来看看
相关文章推荐
- domino纯前台分页功能实现
- 【Hours】使用indexedDB中遇到的问题。
- JsonP跨域问题研究
- js倒计时
- 图解JSP与Servlet的关系
- VS快速生成JSON数据格式对应的实体
- js实现继承的5种方式
- seajs使用教程指南
- javascript Date format(js日期格式化)
- AngulaJs+Web Api Cors 跨域访问失败的解决办法
- js毫秒数转换成时间格式
- javascript函数声明与函数表达式的区别:函数声明提升
- 补全Gemfile缺少到javascript gem
- JavaScript Date 格式化 以及 本周本月的获取
- Json和Xml的区别,以及它们的底层是如何处理的
- js base64位和c# Base64位转换
- js数组操作大全(pop,push,unshift,splice,shift方法)
- [Javascript] Prototype 原型
- 关于js中单引号(')和双引号(")的使用以及转义的理解
- JWT Json Web Token