javascript还能怎么写

还能怎么写?第一次看见这样

例子1

var s=(function(){

       var a;

       操作

       return a;

})();

 

我晕了。。。然后

例子2

var s=(function(){

       var a;

       操作

       return function(){

 

};

})();

我继续晕。。。一个简单函数的声明变这样了。

为什么?为什么?为什么要把简单的事情变的这么复杂。错了,其实是把复杂的问题简单化。

在我们常见的javascript代码中很随意的声明函数和变量以及外联js文件。很容易造成命名冲突互相覆盖等问题,虽然我们可以通过命名规则避 免这种情况的产生。有没没比命名规则更好的解决办法,我们都知道java通过包名称和类名称以及private来解决这些问题,并且隐藏实现,仅仅暴露必 须的暴露的api接口。

 

  1. 1.         现在来理解第一段代码:

var s=(function(){

       var a;

       操作

       return a;

})();

 

对于一段复杂的求值过程,我们可能声明数个变量,而这些变量又暴露在全局的空间。如果通过上述的方式,所有声明的的变量都在function里面运 算,对于全局是不可见的,我们仅仅暴露一个变量s。

 

  1. 2.         第二段代码

var s=(function(){

       var a=0;

 

       return function(){

              a++;

              alert(“这函数被调用了”+a+”次”);

              var b;

};

})();

我们声明了一个函数s,s可能被多次执行,刚好我们的s需要一个类似于java 中的private static变量而javascript没有?怎么办。我可以在函数外面声明一个全局变量,但是这样又占用了一个名称资源,以及可能产生的冲突,因此便有 上述代码。

变量a对应函数外部不可见,却又是静态的,刚好相当private static。

 

下期预告来个简单jquery这种实现。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值