`
zuoge85
  • 浏览: 78245 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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这种实现。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics