`
dengjianbo
  • 浏览: 6431 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

“怪异的写法”?

阅读更多

var a;
(function(){
  a.f1 = {},
  a.f2 = "String"
}) ();

alert(a.f2)

 

首先,用括号包围起来的 function(){...} 被js引擎认为是一个function表达式,后面的 () 就调用了这个匿名函数。


如果你写成 function(){...}() 那就是语法错误,因为js引擎会期待这里是一个有名字的function声明(func声明与func表达式是不同的);
但是可以写成 void function(){...}() 也是可以的,因为void关键字会告诉js引擎后面要跟一个表达式,所以后面就被认出来是一个function表达式所产生的匿名函数对象,并进行调用的结果,void会把调用结果抛弃。

另外 new function(){}() 也是类似的。

这样写的主要好处是,可以把一些不希望暴露出来的内部变量和方法隐藏在匿名函数里面。(

特别是这点。比如直接在js中写:
for(var i = 0; i < ...; i ++)
  ...
那么就会有一个window.i属性被设置,长期存在
而用 (function () { for ( ...) })() 就只是局部变量,执行完就能被清除 )

 

 

分享到:
评论

相关推荐

    javaScript中封装的各种写法示例(推荐)

    每次看到老外写的js组件,思想和写法都怪异,就没看到一个js结构基本相同的代码出来。今天,我就来谈谈js写法,我在开发过程中,也写了几种。对于性能方面,如果代码结构或逻辑写的不好,会造成计算机CPU的运算加大...

    web前端开发面试题易莱胜web前端开发培训面试题.doc

    对于 CSS2 之前已有的伪元素,比如 `:before`,单冒号和双冒号的写法 `::before` 作用是一样的。 6. 如何让一个 div 上下左右居中? 答:有三种方法:使用 `position: absolute` 和 `transform: translate(-50%,-50...

    2010全面兼容多浏览器IE6-IE7-IE8-FF的CSS HACK写法

    如果DOCTYPE声明不正确或缺失,可能会导致浏览器使用怪异模式,从而影响CSS的解析和页面表现。 虽然上述方法在2010年是相对有效的,随着浏览器的更新和进步,一些HACK逐渐被淘汰,新的HACK和解决方案也不断涌现。...

    HTML5 声明兼容IE的写法

    IE8及以下版本的浏览器不支持HTML5声明,因此当这些浏览器访问含有HTML5声明的网页时,会进入一种名为Quirks Mode(怪异模式)的兼容模式,这会导致页面布局等显示问题。为了解决这个问题,可以在HTML文档的头部使用...

    网页页面原结构和CSS写法导致浏览器兼容问题

    3. **盒模型差异**:不同浏览器对盒模型(Box Model)的处理可能存在差异,例如IE6采用的怪异盒模型(Quirks Mode),与W3C标准盒模型不一致,导致元素的宽高计算不同。开发者需要明确指定盒模型,例如使用`box-...

    全面兼容ie6,ie7,ie8,ff的最简单的css写法

    本篇文章将探讨如何实现对IE6、IE7、IE8及Firefox全面兼容的最简单CSS写法。 首先,针对IE8的兼容问题,可以通过在`&lt;head&gt;`标签内添加以下代码来解决: ```html ``` 这条元标签告诉IE8以IE7的标准模式进行渲染,...

    印象笔记指南

    Evernote指南报告 编者 阿德里安·汉(Adrian Hon) 赵天乐 主题和风格指南 主题: 风格指南 我们使用的工具 代码 松弛 ...我们为什么选择这个主题?...一些怪异的主题写法不同,因此我们必须通读文档以完

    PHP迅雷、快车、旋风下载专用链转换代码

    这一行 复制代码 代码如下: &lt;?...//把链接分成2段,//前面是第一段,...//PHP对大小写敏感,先统一转换成小写,不然 出现HtTp:或者ThUNDER:这种怪异的写法不好处理 $behind=$urlodd[1]; if($head==”thunder:”){ $ur

    PHP生成迅雷、快车、旋风等软件的下载链接代码实例

    复制代码 代码如下:&lt;...//PHP对大小写敏感,先统一转换成小写,不然 出现HtTp:或者ThUNDER:这种怪异的写法不好处理 $behind=$urlodd[1]; if($head==”thunder:”){ $url=substr(base64_decode($behind), 2, -2)

    为什么使用DOCTYPE HTML

    然而,随着HTML5的出现,DOCTYPE的写法变得更加简洁,如下: ```html &lt;!DOCTYPE html&gt; ``` 这个简化的DOCTYPE声明不仅易于输入,而且节省了字符,对高流量网站来说,可以减少网络传输的数据量。更重要的是,它同样...

    javascript处理a标签超链接默认事件的方法

    通常前端会给出一个&lt;a&gt;link来代表这个行为,有些还会这样写&lt;a&gt;link或者&lt;a&gt;link这样的写法,但这样并不兼容所有浏览器,有些浏览器就会出现很怪异的形为。 因此,这个问题需要其它方法来解决,其一是用jquery的阻止...

    CSS hack 针对IE6,IE7,firefox显示不同效果

    正确的声明会触发标准模式,而错误的或者缺失DOCTYPE则会导致IE浏览器进入“怪异模式”,从而改变CSS解析规则。 此外,对于浮动(float)元素的处理,也是CSS布局中常见的问题。为了确保容器能适应浮动子元素的高度...

    html面试题.docx

    它的存在确保浏览器以标准模式渲染页面,避免出现怪异模式(quirks mode),保证页面在不同浏览器中的一致显示。 7. HTML5 增加了哪些新的特性,又移除了哪些特性 HTML5 新增特性包括离线存储、拖放功能、媒体元素...

    针对IE6的一些CSS Hack编写时的注意点小结

    - 在Quirks Mode(怪异模式)下,IE6使用的是自己的盒子模型,其中元素的宽度包括内容宽度、内边距、边框宽度,而不包括外边距。这意味着盒模型的计算方式与W3C标准不同,导致布局时需特别考虑这一差异。 以上知识...

    什么是盒模型.docx

    - **怪异盒模型**:宽度包括内容区、`padding`和`border`。可以通过`box-sizing`属性进行控制。 了解盒模型的概念及其各个组成部分对前端开发者来说至关重要。正确使用`margin`和`padding`能够帮助我们更好地控制...

    浅谈浏览器兼容性模式[按F12便知]

    DOCTYPE声明的写法直接影响到浏览器使用的模式。为进入标准模式,可以使用如下声明: ```html &lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&gt; ...

    吉林长春市九台区2020届中考语文压轴试题十九含解析

    1. 汉字与拼音:元宵的正确写法是“宵”,拼音是“xiāo”,慰藉的正确读音是“jiè”。 2. 词语选择: - “蕴藏”与“蕴含”:这里指传统节日包含团圆的主题,应选“蕴含”(B)。 - “魂牵梦绕”与“乐不思蜀”...

    js 兼容火狐\360和IE的日历控件

    - CSS样式在不同浏览器中的实现可能存在差异,需要了解并适配如盒模型、透明度、渐变等属性的跨浏览器写法。 - 使用`&lt;!DOCTYPE&gt;`声明文档类型以启用标准模式,避免IE的怪异模式。 4. **事件处理**: - IE使用`...

    前端开发的面试经

    - **Quirks模式**:也称为怪异模式,是一种向后兼容的模式,用于处理不符合标准的HTML文档。在这种模式下,浏览器会模仿老式浏览器的行为,以确保页面能够正常显示。 - **避免Quirks模式**:通过在文档头部添加`&lt;!...

    解决IE7下在DD DT中插入a元素导结果列表显示逐级向左

    例如,可以使用条件注释或者JavaScript的文档兼容性写法来为IE7单独调整样式。同时,要避免使用一些只有在IE7及更早版本中才会出现的问题的CSS hack技术。 需要注意的是,从HTML5开始,规范放宽了对元素的使用限制...

Global site tag (gtag.js) - Google Analytics