封闭空间以及封闭空间中的选项卡

js中的封闭空间主要是利用了给变量加括号结果不变。比如:

var show=function(){

  alert(1);

}

show();

即使给show()变换成(show)(),结果是不变的。show本身代表的是(function(){alert(1)}),所以还可以写成匿名函数(function(){alert(1)})();

这样写的好处是匿名函数在执行的同时,还可以定义他,还有一个是定义的变量都变为局部变量。

封闭空间可以避免变量名重复的问题

比如在工作中,你写了一行代码:

var oBtn=document.getElementById("input")[0];

oBtn.onclick=function(){

  alert(1);

};

几天以后你的同事B也写了这样一行代码

var oBtn=document.getElementById("input")[1];

oBtn.onclick=function(){

  alert(2);

};

你同事写的代码就会覆盖你的代码,发生冲突。

这个时候可以使用封闭空间解决这个问题

自己的代码;

;(function(){

  var oBtn=document.getElementById("input")[0];

  oBtn.onclick=function(){

    alert(1);

  };

})();

同事的代码:

;(function(){

  var oBtn=document.getElementById("input")[1];

  oBtn.onclick=function(){

    alert(2);

  };

})();

使用了封闭空间后,变量的作用域发生了改变,这个时候的oBtn只在自己的函数中起作用。

在函数前面加分号是为了避免被别人坑,导致和别的程序猿发生肢体冲突:如果别人的代码没有写分号,如果代码压缩的时候就会发生问题,这个时候我们自己的代码就会拯救我们,而两个分号写在一起时是没有问题的。

在函数后面写分号,是为了不坑别人,避免被别人打。

封闭空间的选项卡

for(var i=0;i<aBtn.length;i++){

  (function(index){//这里的index为定义的参数

    aBtn[i].onclick=function(){

      for(var i=0;i<aBtn.length;i++){

        aBtn[i].className=‘‘;

        aDiv[i].style.display=‘none‘;

      }

      this.className=‘on‘;

      aDiv[this.index].style.display=‘block‘;

    };    

  })(i);//i为for循环里的某个值,i++,

}

封闭空间解决的问题:

1:变量名冲突的问题

2:for循环里去不到i值的问题

时间: 2024-08-01 00:25:53

封闭空间以及封闭空间中的选项卡的相关文章

关于&ldquo;接收连接器&rdquo;中各选项卡答疑篇

初次接触Exchange Server 2010时都会有一些关于"接收连接器"中各个选项卡会有一些疑问,今天我们来一起聊聊这个问题. 首先我先以一个初学者的身份提出如下问题: 1. 安装好Exchange 2010后,"接收连接器"中的"Default"和"Internet"哪条真正在邮件接收时起到了作用?,如下图示 2.关于"接收连接器"属性页中的"身份验证"各项指的是什么意思?有无详

介绍下京东的(选项卡中的选项卡)是怎么实现的

我们都谁知道选项卡是通过数组实现的,那么选项卡中的选项卡无非就是一个二维数组. 道理逻辑很简单,下面是我实现的一个方法: 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 <title>选项卡嵌套选项卡</title> 6 <style type="text/css"> 7 *{ 8 padding: 0;

恢复word中审阅选项卡

碰到在Word中,使用自定义功能区添加审阅选项卡,仍然不显示审阅选项卡 二个办法: 1.检查COM加载项,找出并从此禁用,如:iWebOffice2009.ocx 2.创建自定选项卡“审阅(自定义)”,再审阅中所有功能组.功能全移过来.

关于部分Hackintosh机型使用Clover引导后关于本机中“内存”选项卡不显示Bug的修复

问题描述: 当smbios设置为imac pro时,“关于本机”中的内存选项卡不显示,需要设置为imac19机型才能显示,虽然对性能和使用没有影响,但是部分情有独钟于iMac Pro机型的小伙伴还是强迫症发作,下面就这个问题给出解决方案: 1:网上有修正的注入kext,这里不推荐,我一向是不提倡使用过多的第三方kext 2:对config.list文件做一个小小的修正,这个方法是今天要分享给大家的 步骤如下: a,打开config.list文件,可以用bbedit或者CC,这里为了方便推荐使用c

Android中的选项卡(Tab)使用案例

使用Tab组件的步骤说明: 1.在布局文件中使用FrameLayout列出Tab组件及Tab中的内容组件. 2.Activity要继承TabActivity. 3.调用TabActivity的getTabHost()方法得当TabHost对象. 4.通过TabHost创建Tab选项. 下面来看一个小例子: <!--xml--> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"

如何制作网页中的选项卡?

1. 做什么? 用选择按钮切换图片. 具体效果如下:   2. 工具 用记事本,或者Dreamweaver( 如果害怕自己敲错字母~),来编写代码. 用火狐浏览器做调试. 我是这么试的, 不得不说页面做得丑死了. 3. 思路 首先用HTML把单选按钮和图片都创建出来, 然后编写JS, 把单选按钮和显示图片的事件绑定起来, 其中事件的思路是关闭其他图片,开启对应的图片. 4. 代码 <head> <title>一行白鹭上青天</title> </head> &

解决PowerDesigner中DBMS选项卡为空白

点击DBMS后面的黄色(浏览)文件图标, 找到安装目录里面PowerDesigner \Resource Files\DBMS,就可以了.

Date对象,封闭空间,函数传参和封装,获取非行间样式,字符串操作

一.Date对象 1. 获取 oDate.getFullYear() 获取年份 oDate.getMonth()+1  获取月份( 0-11)----->1-12 oDate.getDate()  获取日 1-31 oDate.getHours() 获取小时 oDate.getMinutes() 获取分 oDate.getSeconds() 获取秒 oDate.getMilliseconds();   //毫秒 oDate.getDay() 获取星期几 0-6     0:星期天 例:数码时钟

怎么实现FineReader选项卡中的保存模式的修改

PDF 是我们平时广泛使用的文档格式,在ABBYY Finereader这款OCR文字识别软件中PDF文档的显示不会因电脑不同而有差异,可加密保护,非常适合在电子存档中进行保存,那么我们在ABBYY Finereader中该如何修改这保存模式呢?   该选项卡上的保存选项分为以下几类: 默认纸张大小 从下拉列表中选择保存为 PDF 格式所用纸张尺寸. 保存模式 根据计划使用电子文档的方式,从以下选项中选择一个选项: ● 仅适用于文本和图片 该选项仅保存已识别的文本和关联图片.可对页面进行全文搜索