了解全局变量

了解全局变量

作者:LAMP小白  点击:1994  发布日期: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
0