全局对象与立即执行函数

全局对象

无论是浏览器环境、还是node环境。都会提供一个全局变量

  • 浏览器环境:window
  • node环境:global

全局对象有下面几个特点

  • 全局对象的属性可以直接被访问

  • 给未声明的变量赋值,实际就是给全局对象的变量赋值,在函数里也一样 !!不能这么写

  • 所有的全局变量、全局函数,都会附加到全局对象

    称之为全局污染,又称之为全局暴露,或简称污染、暴露

    (在全局代码里面定义了一个变量、声明了一个函数,造成了全局对象多了一些属性)

    若不希望把a附加到全局,我们认为a是污染了全局

    希望b和c附加到全局,我们认为把b和c暴露给全局

  • 如果要避免污染,需要使用立即执行函数改变其作用域

function init(){
    var a = 1;//不希望全局污染,把它放到函数里
}
//函数本身有污染

立即执行函数 IIFE

//先书写函数
(function () {})()
//如果不需要把c暴露出去,不需要写var abc = 
//不需要暴露的就写在里面,需要暴露的就返回,暴露出来的名字就是定义的abc
var abc = (function(){
    var a = 1;//不希望污染全局
    var b = 2;//不希望污染全局
    function c(){
        console.log(a + b)
    }
    var d = 123;
    //return c;//返回值,想让c暴露出去
    return {
        c: c,
        d: d,
    }//把c暴露全局,赋值给abc
})();

//用()将匿名函数括起来,这就是立即执行函数
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值