蛋疼的js 之函数篇 (function(window,undefined){code...})(window)

蛋疼的js 之函数篇 (function(window,undefined){code...})(window)
 

    第一次在jQuery中看到这种写法,很是纠结这是什么意思。

    后来经查证,这是一对括号中定义了一个匿名函数并马上对其进行调用,这段代码是马上执行的。最后面那个小括号

及里面的参数就是对这个匿名函数调用及传的参数。

    现在匿名函数有两个参数,一个window,一个undefined,传入的参数是window,第二个参数没有传。为什么这样做呢,因为在js中,window和undefined是非常重要的两个变量,window表示浏览器窗口对象,undefined则表示未定义,但js并没有将他们两个作为保留字,匿名函数中的window和undefined两个是可以被重定义的,你完全可以定义window='aa';当然这仅限于匿名函数,其余的地方你这么定义是不可以的,jQuery为了避免覆盖window和undefined才这样写————不对。。。。。。

1
2
3
4
5
6
7
8
//这段代码中,window和undefined并没有被覆盖
( function (){
     window =  'aa' ;
     undefined =  'bbb' ;
     undefined = void 0;
     alert(window)
     alert(undefined)
})()
1
2
3
4
5
6
7
8
//下面这段代码中,window很容易就被赋值为aa undefined的值不可以被修改,jQuery这样写貌似更不安全才对
( function (window, undefined){
     window =  'aa' ;
     undefined =  'bbb' ;
     undefined = void 0;
     alert(window)
     alert(undefined)
})(window)

    采用jQuery的这种写法做的测试,在匿名函数内部,window的值很容易就被修改成'aa',jQuery这样做貌似不合理,

难道jQuery想在其内部对window重定义????

    待到好好看看jQuery在来定夺。。。。。。。。。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值