作者:LAMP小白 点击:2117 发布日期:2012-12-31 15:34:00 返回列表
尽量少用全局变量
变量在函数内声明,只在函数内有效,不能再外部使用,全局变量与之相反,在函数外部声明,在函数内无需声明即可简单那的使用
每一个javaScript环境都有全局对象,可在函数外部使用this进行访问,创建的每一个全局变量都为全局对象所有,在浏览器中,为了方便,使用window表示全局对象本身
全局变量的问题
全局变量的问题在于他们在整个javaScript应用或WEB页面内共享,他们生存与一个命名空间内,总有可能发生冲突,因此,与同一个页面上的其他脚本友好共存非常重要,要尽可能的少使用全局变量,如命名空间模式或自执行立即生效函数,但最重要的方法还是勇士var声明变量
javaScript总是在不知不觉中就出人意料的创建了全局变量,其原因在于javaScript的两个特性,一个特性是javaScript可直接使用变量,甚至无需声明.第二个特性是javaScript有个暗示全局变量的概念,即任何变量,如果未经声明,就为全局对象所有
mio_lt;scriptmio_gt; function haha() { result = 100; } haha(); console.log(result); mio_lt;/scriptmio_gt;
变量释放时的副作用
隐含全局变量与明确定义的全局变量有细微不同,不同之处在于能否使用delete操作撤销变量
使用var 创建的全局不能删除
不适用var 创建的隐含全局变量可以删除
这表明全局变量严格来说不是真正的变量,而是全局对象的属性,属性可以通过delete操作符删除,但变量不行
mio_lt;scriptmio_gt; var yeee = 'abc'; function haha() { result = 100; } haha(); console.log( delete result ); console.log( delete yeee ); mio_lt;/scriptmio_gt;
在ECMAScript 5 的strict模式中,为没有声明的变量赋值会抛出错误
访问全局变量
在浏览器下,可通过window属性在代码的任意位置访问到全局对象,如果需要访问不带硬编码处理的标示window,可以按下面这个方式,从内嵌函数的作用域访问
mio_lt;scriptmio_gt; var mio = (function(){ return this; }()); console.log(mio.location); mio_lt;/scriptmio_gt;
上一篇:console对象 下一篇:快递查询API