论坛首页 Web前端技术论坛

EXT 中js语法请教

浏览 3871 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-01-07  
ext.js文件中有这样一段js代码
(function(){
    var ua = navigator.userAgent.toLowerCase();

    var isStrict = document.compatMode == "CSS1Compat",
        isOpera = ua.indexOf("opera") > -1,
        isSafari = (/webkit|khtml/).test(ua),
        isIE = ua.indexOf("msie") > -1,
        isIE7 = ua.indexOf("msie 7") > -1,
        isGecko = !isSafari && ua.indexOf("gecko") > -1,
        isBorderBox = isIE && !isStrict,
        isWindows = (ua.indexOf("windows") != -1 || ua.indexOf("win32") != -1),
        isMac = (ua.indexOf("macintosh") != -1 || ua.indexOf("mac os x") != -1),
        isLinux = (ua.indexOf("linux") != -1),
        isSecure = window.location.href.toLowerCase().indexOf("https") === 0;
})();


这段代码应该是加载后自动执行,不知道这没写的用以何在?是不是为了防止命名冲突?
   发表时间:2008-01-07  
(function(){})() EXT里用的比较多,个人感觉这也是避免命名冲突的便捷方法。
先声明一些变量,接着Ext.apply()变量到Ext对象
        /** @type Boolean */
        isOpera : isOpera,
        /** @type Boolean */
        isSafari : isSafari,
        /** @type Boolean */
        isIE : isIE,
        /** @type Boolean */
        isIE6 : isIE && !isIE7,
        /** @type Boolean */
        isIE7 : isIE7,
        /** @type Boolean */
        isGecko : isGecko,
        /** @type Boolean */
        isBorderBox : isBorderBox,
        /** @type Boolean */
        isLinux : isLinux,
        /** @type Boolean */
        isWindows : isWindows,
        /** @type Boolean */
        isMac : isMac,
        /** @type Boolean */
        isAir : !!window.htmlControl,
0 请登录后投票
   发表时间:2008-01-07  
这是不是所谓的js闭包呢?
0 请登录后投票
   发表时间:2008-01-07  
我认为是。
见D.C对闭包的定义:
引用
The scope that an inner function enjoys continues even after the parent function have returned.

每个function都有自己的scope,也就是自己的closure了
0 请登录后投票
   发表时间:2008-01-07  
sp42 写道
我认为是。
见D.C对闭包的定义:
引用
The scope that an inner function enjoys continues even after the parent function have returned.

每个function都有自己的scope,也就是自己的closure了


错错!!!
我们不必抠概念, 就上面的代码没有形成闭包。
0 请登录后投票
   发表时间:2008-01-07  
closure几乎总是形成的,上面这个例子也不例外。只是是否利用得到closure的好处的问题。
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics