首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >解释分号的简单方法

解释分号的简单方法
EN

Stack Overflow用户
提问于 2012-08-28 06:49:12
回答 3查看 155关注 0票数 3

我的妻子正在努力学习Codecademy (Javascript),分号让她很沮丧。她问我哪些行需要以分号结尾。她才刚刚开始,所以我不想在这里用“语句”、“表达式”等来吓到她。我只是告诉她不要用分号,毕竟这是JS ;)

那么我该怎么解释呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-08-28 07:10:06

  1. 分号结束每件事,
  2. 你不希望它紧跟在if(test)之后,因为它会结束那件事(实际上-它不是无效的,你真的不想在这里结束它)。for(a;b;c)也是如此(但for中的每一个东西都是一个thing).
  3. x = 2 + 1 + 3 + 4 + 5 * 10 + 2;,否则你不会得到全部的和。即使超过三四行,你也希望它是一个单一的和-一个单一的thing.
  4. Braces将几个东西组合成一个大的东西。因为它们已经是一个有结尾的东西,所以它们不需要分号。但不会痛的。
票数 5
EN

Stack Overflow用户

发布于 2012-08-28 07:55:48

简单的规则是所有语句都必须以分号结尾。像表达式、块和函数声明这样的东西不会以分号结尾。也许下面的内容会有所帮助。

块不会以分号结尾:

代码语言:javascript
复制
if ( /*condition */ ) { // start of block, no semicolon
  ...                   // function body
}                       // end of block, no semicolon

对于do..while、while、for..in等其他块也是如此。

函数声明没有分号(它们使用块):

代码语言:javascript
复制
function foo() { // start of block
  ...            // code, may be statements with semicolons and more blocks
}                // end of block, no semicolon

看起来像块但不是块的东西:

代码语言:javascript
复制
// Object literal isn't a block, it's a statement so uses {}
var obj = {name: 'fred', sex: 'male'};

// Object literal over several lines has one semicolon at the end
var obj = {
    name: 'fred',
    sex: 'male'
};

语句形式的函数表达式:

代码语言:javascript
复制
(function(){...}());  // expression in (), the
                      // terminating semicolon makes it a statement

在几行代码中:

代码语言:javascript
复制
(function(){  // Start of block (function body) doesn't use semicolon
    ...
 }()          // block end, no semicolon.  Can't end statement here
              // (unbalanced parenthesis) so no semicolon after ()
);            // but end of statement does need semicolon

请注意,函数表达式可以只是表达式。

例如,函数调用传递了调用函数表达式的结果(注意函数表达式主体中以分号结尾的语句):

代码语言:javascript
复制
foo( (function(){alert('hey'); return 'ho';}()) );

function foo(s) {
  alert(s);
}

要测试是否需要分号,请删除两行代码之间的换行符:

代码语言:javascript
复制
var a = 'foo';
alert(a);

删除换行符:

代码语言:javascript
复制
var a = 'foo'; alert(a); // works

删除分号:

代码语言:javascript
复制
var a = 'foo' alert(a); // fails
票数 1
EN

Stack Overflow用户

发布于 2012-08-28 06:54:29

我的Javascript有点生疏了,但我相信你可以用:每一行,除非它已经以}或{结尾。然后,只需确保每条语句都在新的一行上,尽管给出了原始问题,我假设这不是问题。

而且不以分号结束行也不是一个好主意。在某些情况下,它实际上不会工作。

编辑

在几乎所有的情况下,它应该是好的,并且在另一个答案中发布的文章是关于它的很好的阅读,但是我仍然坚持我对分号的喜爱。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12150650

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档