Possible Duplicate:
JavaScript: When should I use a semicolon after curly braces?函数声明后是否需要分号?
有人在函数声明后添加了分号,但有人没有。这是在函数声明后添加分号的好习惯吗?
function test(o) {
}
function test(o) {
};
Possible Duplicate:
JavaScript: When should I use a semicolon after curly braces?函数声明后是否需要分号?
有人在函数声明后添加了分号,但有人没有。这是在函数声明后添加分号的好习惯吗?
function test(o) {
}
function test(o) {
};
函数声明不需要(也不应该有),分号跟随它:
function test(o) {
}
但是,如果你写一个函数作为声明,像下面的变量初始化,然后该语句应该以分号结束,就像任何其他的说法应该是:
var a = function test(o) {
};
定义这样一种功能,当你不需要分号号。
但是,如果像这样定义一个函数:
var test = function (o) {
}
这不是绝对必要的,但你可能想使用它们,特别是如果你把功能在同一行。
第一种方式定义了一个函数,但第二种方式将一个函数赋值给一个变量,因此是一个语句。大多数语句都是用分号分隔的。定义函数可以被认为是一个常见的反例,因为并不是很多人使用它们。
分号和函数声明:
function test(o) {
// body
} // semicolon no
var test = function (o) {
// body
}; // semicolon yes
请参阅JSLint来格式化代码问题。
在第二种函数声明中也不需要使用分号。它运行后的代码没有任何问题。 – 2017-01-27 17:27:33
对浏览器来说,没关系。对于语义问题,只有在您正在对函数进行原型设计或使用函数声明时才重要。
function stuff(stuff) {
alert(stuff);
} //don't need a semicolon
Object.prototype.stuff = function(stuff) {
alert(stuff);
}; //need a semicolon
var stuff = function(stuff) {
alert(stuff);
}; //need a semicolon
分号在定义函数时不是必需的,但是将其应用并不是错误。
一个例外不过,如果你使用的功能包装和传递的参数,你需要加分号,例如之间:
(function(v){alert(v)})('1');
(function(s){alert(s)})('0')
... Otherwise forget about them ...
究竟发生了什么你是在函数后面添加一个空语句。
function test (o) { return o; };
可以被看作是相似于:
var test = 0;;
即第二分号不是错误每本身。浏览器将其视为一个绝对没有任何事情发生的声明。
在这里有两件事要记住。
这适用ONLY起作用-声明和控制块(/ IF /同时/开关/等)。
函数的声明应该在你的范围的底部定义,这样你就不会遇到这样的问题:
function test() {}
(function (window, document, undefined) { /* do stuff */ }(window, document));
因为浏览器会认为你的意思是function test() {}(/*return value of closure*/);
这是一个错误。一个非常糟糕和令人讨厌的错误,很容易忽略。
但没关系,因为函数声明可以在return语句下运行,并且仍然可以正常工作。
所以,即使你想去:
function doStuff() {
return (function() { /*process stuff*/ test(); }());
function test() {}
}
这是去上班只是桃色。
这可能是相关的:[应该多行var f = function(){/ *代码* /}得到一个分号](http://stackoverflow.com/q/4515084/990877)。总结一下:在赋值表达式中声明函数时(即'var f = function(){}'),用';'关闭。 – PPvG 2012-08-15 23:27:57