2010-12-08 47 views
17

当阅读其他代码时,我已经看到函数写成以分号结尾而不以分号结尾。以;结尾的函数表达式;与不是

有:

var testFunction = function() { 
    // magic happens here 
}; 

无:

var testFunction = function() { 
    // magic happens here 
} 
  • :是否多了一个 “技术性” 比其他的是否正确?
  • ?:是否有速度优势?
  • ?:浏览器不在乎,所以它只是一种从另一种语言或旧的JavaScript函数所需的格式中流露出来的风格?
  • :?#{问题我还没有考虑要问在这里,但你认为我应该有}

更新:我也发现了这个非常有用=>https://developer.mozilla.org/en/JavaScript/Reference/Functions_and_function_scope

+3

我只是测试这一点,它出现在我最喜欢的浏览器,而分号的版本是非常快! – 2010-12-08 23:10:58

+0

@Marcel,有趣!你用什么代码来测试以及结果如何? – 2010-12-08 23:11:40

+5

您可能会发现以下有关分号插入的有趣内容 - http://inimino.org/~inimino/blog/javascript_semicolons – 2010-12-08 23:18:59

回答

1

是多了一个“技术上“比另一个更正确?

不是。从技术上讲,您正在为恰好是函数的变量赋值,就像var x = 10一样。您可以使用或不使用;来声明它,并且这种方式同样正确。

有一个速度优势吗?

如果有明显的差异,我会非常惊讶。

浏览器不在乎,所以它只是一种从另一种语言或过去JavaScript功能所需的旧格式流血的风格?

浏览器不关心,它只是一种语言的怪癖。

问题我还没有考虑要问在这里,但你认为我应该有

哪一个更具可读性,你说呢?我个人更喜欢用;结束语句,因为它感觉正确,并且更清楚你正在做什么。我来自Java-land,在需要的地方,但即使不是这样,我认为明确地以;结束声明就更清楚了,所以我将它包括在内。

但是,与任何代码风格的争论一样,它很快成为个人选择的问题,并且出现了火焰之战。谨慎行事。

6

有两种方法来定义函数:

var testFunction = function() { 
    // magic happens here 
}; 

function testFunction(){ 
    // magic happens here 
} 

我相信这是更好地与一个;结束时,你使用的语句(第一选择)定义它,但不作为函数定义(第二选项)。

JS解析器非常灵活,所以YMMV。

3

如果让;分号终止函数,我认为它在技术上是正确的,因为您是执行声明性语句。尽管语法不需要,但通常可以接受的是,变量声明以;分号结束。在这种情况下,“变量”恰好是一个函数。

// As you do this 
var i = 0; 

// Also do this 
var obj = function() { 
    // aforementioned magic 
}; 

这也可能是值得指出的是,宣告对象时,每个字段以逗号,分离。

var obj = function() { 
    magic1 : function() {}, 
    magic2 : function() {}, // <-- Similarly, comma is optional here...sorta 
          //  See Marcel's comment below. 
}; 

当然,对于简单函数的声明,它可以被认为是“技术上更正确”,以拥有它,因为它不是线性执行的语句。 (请参见谷歌风格指南中的优秀counterpoint等)在这种情况下,分号;被解释为“空”代码行,而不是表达式终止令牌。

通过简单的函数声明,丢开:

function doMagic() { 
    // aforementioned magic 
} 
相关问题