这 2种JS函数方式你更喜欢那种写法 ?为啥

markYun 发布于 2013/08/24 09:37
阅读 378
收藏 0
 function chenkbrand_name() {
         
        noNULL($(this));
};
var chenkshorname = function() {
         
        noNULL($(this));

};


  这 2种JS函数方式你更喜欢那种写法 ?为啥

加载中
1
纠结名字
提醒,除非一个函数是对象的一个方法,否则还是老老实实用第一种吧,因为第二种只有执行到那个函数定义的时候,函数才存在,而第一种的定义会被升到编译期。
mark35
mark35
如果是在函数内定义A函数那么A的标准方法是用第二种来定义,虽然第一种也可以运行
CeeFee
CeeFee
+2^10
Ken5233
Ken5233
+1
0
彷徨的看着你
彷徨的看着你

第二种,一般我不会使用第一种写法,遵循0全局变量规则。

第二种也是在闭包中使用。


我是潮汐
我是潮汐
胡扯...
彷徨的看着你
彷徨的看着你
回复 @Mr_Zhou : 都是全局变量,还是尽量避免吧, 如果是简单脚本,都无所谓, 稍微有点规模的程序,建议除非是建对象,不然不要使用第一种。
Mr_Zhou
Mr_Zhou
第二种不是全局变量吗?新手求解
0
铂金小鱼
铂金小鱼
其实本质上没任何区别,无非一个是匿名函数一个是自定义命名函数
0
铂金小鱼
铂金小鱼
在什么场合可哪种,自已掂量,比如我需要把一个函数传到千山万水里去,那么就给个变量引用着咯,如果这个函数很安坐守已,那就乖乖地在所在作用域里隐姓埋名吧
0
vvtf
vvtf

只在JS内部调用的话我用第一种

如果外部,别的页面,html中的事件等有调用就用第二种。

所以是2种结合

0
彷徨的看着你
彷徨的看着你
function obj(){}
obj.fun=function(){}
obj.property="xxx";
obj.prototype={};
new obj();


var fun=(function(){
  var fun=function(){};
  var property='XXX';
  return {out_fun:fun,out_property:property};
})();
0
我是潮汐
我是潮汐

第二种在不加var时 会声明成全局变量.

第一种永远都是在本地作用域

其他没什么区别,  我记得犀牛书有详细说明.

还有前面说的 变量提升那个...第二种执行到赋值语句才能调用.  第一种则不受影响.

0
我是潮汐
我是潮汐
变量提升 http://www.cnblogs.com/damonlan/archive/2012/07/01/2553425.html
苏生不惑
苏生不惑
学习了
0
泡不烂的凉粉
泡不烂的凉粉
应尽量使用第二种方式. 以方便调试.
0
苏生不惑
苏生不惑
第一种会函数重载,第二种在赋值前不能调用
返回顶部
顶部