Javascript 解释分号的简单方法
我的妻子正在用Javascript编写代码,分号让她很沮丧。她问我哪些行需要以分号结尾。她才刚开始,所以我不想在这里用“语句”、“表达式”等来吓唬她。我只是告诉她不要用分号,毕竟是JS;)Javascript 解释分号的简单方法,javascript,Javascript,我的妻子正在用Javascript编写代码,分号让她很沮丧。她问我哪些行需要以分号结尾。她才刚开始,所以我不想在这里用“语句”、“表达式”等来吓唬她。我只是告诉她不要用分号,毕竟是JS;) 那么我应该如何解释呢?我的Javascript有点生疏,但我相信你可以逃脱: 每一行,除非它已经以}或{结尾。然后确保每一个语句都在一个新的行上,尽管考虑到最初的问题,我认为这不是一个问题 不以分号结束行是个坏主意。在某些情况下,它实际上不起作用 编辑 在几乎所有的情况下,它都应该是好的,并且在另一个答案中发
那么我应该如何解释呢?我的Javascript有点生疏,但我相信你可以逃脱: 每一行,除非它已经以}或{结尾。然后确保每一个语句都在一个新的行上,尽管考虑到最初的问题,我认为这不是一个问题 不以分号结束行是个坏主意。在某些情况下,它实际上不起作用 编辑 在几乎所有的情况下,它都应该是好的,并且在另一个答案中发布的文章是关于它的很好的阅读,但是我仍然坚持我对分号的热爱*
for
中的每件事都是一件事)x=2+1+3+4+5*10+2;
是一个单一的东西,否则你不会得到整个总和。即使超过三行或四行,你也希望它是一个单一的总和-一个单一的东西简单的规则是,所有语句都必须以分号结尾。表达式、块和函数声明等不会以分号结尾。以下内容可能会有所帮助 块不会以分号结尾:
if ( /*condition */ ) { // start of block, no semicolon
... // function body
} // end of block, no semicolon
其他块也是如此,如do..while、while、for..in等
函数声明没有分号(它们使用块):
看起来像块但不是块的东西:
// 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'
};
函数表达式作为语句:
(function(){...}()); // expression in (), the
// terminating semicolon makes it a statement
多行:
(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
请注意,函数表达式可以只是表达式
e、 g.传递调用函数表达式结果的函数调用(注意函数表达式体中以分号结尾的语句):
要测试是否需要分号,请删除两行代码之间的换行符:
var a = 'foo';
alert(a);
删除换行符:
var a = 'foo'; alert(a); // works
删除分号:
var a = 'foo' alert(a); // fails
分号位于:
1。
赋值的右侧。2。
函数调用。3。
表达式…+1,用于用如此多的细节覆盖大括号,但第一点可以做一些附加。结束每件事
如中所示,如果在行的末尾有一个运算符,或者下一行使用返回值如果是上一个,那么你就不能“结束”它,否则它就会破裂。@Fabricio Matté这是对“事物”的一个很好的阐述。与这些事物的平衡总是在足够含糊以传达要点之间,而不是不精确到造成比你解决的更多的混乱。(为什么我喜欢“好的,这是含糊的想法”之后。)“好吧,这是确切的规则”在坏习惯开始之前,尽早而不是晚一点)是的,我明白了。虽然我的阐述不是很详细,它不包括函数声明/表达式等。但是你对事物的解释应该足以按照OP的要求给出一个基本概念。学习基本知识非常重要,她应该学习不同类型的语句,并且这些语句需要以分号结尾lon.其实没那么难。使用JSLint作为一个学习工具(学会忽略或容忍它的挑剔)。@Fabricio Matté是的,在某个时候,你必须扔掉所有这些,然后说,“好的,这是确切的规则”。做……而以分号结尾。哦,尽管它似乎可以省略(至少在Firefox和IE9中)。它可以在行尾省略,就像大多数分号一样。@Jonhana浏览器容忍do{}while(false)var i=3;
,在我看来,他们不应该这样做。或者自动插入分号比我想象的要复杂一些。
var a = 'foo'; alert(a); // works
var a = 'foo' alert(a); // fails