JavaScript使用类似C的语法,它需要使用分号来分隔某些语句。JavaScript尝试使用分号插入机制使这些分号可选。这是危险的,因为它可以掩盖错误。 和C一样,JavaScript有++和- and (操作符,可以是前缀或后缀)。消歧是由分号完成的。 在JavaScript中,行提要可以是空白,也可以充当分号。这用另一种模糊来代替。 JSLint希望每个语句后面都跟着;除了函数、if、开关、尝试和时间之外。JSLint不希望看到不必要的分号或空语句。
因此,一个良好的做法是:
var one = 'something';
var two = 'other thing';与:
var one = 'something'
, two = 'other thing';当涉及到方法链时,航空BnB的风格指南-在白色空间部分建议对方法链使用缩进。
// bad
$('#items').find('.selected').highlight().end().find('.open').updateCount();
// good
$('#items')
.find('.selected')
.highlight()
.end()
.find('.open')
.updateCount();
// bad
var leds = stage.selectAll('.led').data(data).enter().append('svg:svg').class('led', true)
.attr('width', (radius + margin) * 2).append('svg:g')
.attr('transform', 'translate(' + (radius + margin) + ',' + (radius + margin) + ')')
.call(tron.led);
// good
var leds = stage.selectAll('.led')
.data(data)
.enter().append('svg:svg')
.class('led', true)
.attr('width', (radius + margin) * 2)
.append('svg:g')
.attr('transform', 'translate(' + (radius + margin) + ',' + (radius + margin) + ')')
.call(tron.led);当Javascript转到插入分号时,这种缩进会引起问题吗?
发布于 2014-12-02 15:31:18
不是的。缩进将被忽略,并且换行符也将被忽略,因为有链式方法的下列行将继续使用有效的语句。
JavaScript的自动分号插入有点复杂,但大多数情况下是非常直观的。
人们遇到的问题是,在哪里,可以将运算符解释为后缀操作符的操作符在没有终止前一条语句的情况下启动一行。您的代码中没有一个会受到此问题的影响。
在这种情况下,只要你没有忘记分号:
// forgot--v
var a = "b"
(function() {
// do some stuff
})();或者这个:
// forgot--v
var a = "b"
[1,2,3].forEach(function(n) {
// do something
});你会好起来的。
在return语句之后,可能是知道行中断位置的最大地方。
return
{
foo: "bar"
}这将给您一个undefined返回值,而不是对象。
特别是,我更喜欢这种形式的变量声明:
var one = 'something'
, two = 'other thing';虽然我把,放在v下面而不是r下面(这并不重要)。很容易看出,当变量列表很长时,您已经记住了所有的逗号。WRT分号插入是完全安全的。
发布于 2014-12-02 15:30:59
不;缩进不是JS语法的一部分。
请不要依赖分号缩进。
(不相关,但我不喜欢那样的缩进;我更喜欢把它们放在同一栏上。尽管如此,当使用jQuery时,您的end()示例似乎是有意义的,因此我可能不得不重新考虑。)
https://stackoverflow.com/questions/27253034
复制相似问题