首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript --方法链上的缩进会导致分号问题吗?

问Javascript --方法链上的缩进会导致分号问题吗?
EN

Stack Overflow用户
提问于 2014-12-02 15:29:36
回答 2查看 1.1K关注 0票数 3

来自JSLint.com

JavaScript使用类似C的语法,它需要使用分号来分隔某些语句。JavaScript尝试使用分号插入机制使这些分号可选。这是危险的,因为它可以掩盖错误。 和C一样,JavaScript有++和- and (操作符,可以是前缀或后缀)。消歧是由分号完成的。 在JavaScript中,行提要可以是空白,也可以充当分号。这用另一种模糊来代替。 JSLint希望每个语句后面都跟着;除了函数、if、开关、尝试和时间之外。JSLint不希望看到不必要的分号或空语句。

因此,一个良好的做法是:

代码语言:javascript
复制
var one = 'something';
var two = 'other thing';

与:

代码语言:javascript
复制
var one = 'something'
  , two = 'other thing';

当涉及到方法链时,航空BnB的风格指南-在白色空间部分建议对方法链使用缩进。

代码语言:javascript
复制
// 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转到插入分号时,这种缩进会引起问题吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-12-02 15:31:18

不是的。缩进将被忽略,并且换行符也将被忽略,因为有链式方法的下列行将继续使用有效的语句。

JavaScript的自动分号插入有点复杂,但大多数情况下是非常直观的。

人们遇到的问题是,在哪里,可以将运算符解释为后缀操作符的操作符在没有终止前一条语句的情况下启动一行。您的代码中没有一个会受到此问题的影响。

在这种情况下,只要你没有忘记分号:

代码语言:javascript
复制
// forgot--v
var a = "b" 

(function() {
    // do some stuff
})();

或者这个:

代码语言:javascript
复制
// forgot--v
var a = "b"

[1,2,3].forEach(function(n) {
    // do something
});

你会好起来的。

在return语句之后,可能是知道行中断位置的最大地方。

代码语言:javascript
复制
return
{
    foo: "bar"
}

这将给您一个undefined返回值,而不是对象。

特别是,我更喜欢这种形式的变量声明:

代码语言:javascript
复制
var one = 'something'
  , two = 'other thing';

虽然我把,放在v下面而不是r下面(这并不重要)。很容易看出,当变量列表很长时,您已经记住了所有的逗号。WRT分号插入是完全安全的。

票数 3
EN

Stack Overflow用户

发布于 2014-12-02 15:30:59

不;缩进不是JS语法的一部分。

请不要依赖分号缩进。

(不相关,但我不喜欢那样的缩进;我更喜欢把它们放在同一栏上。尽管如此,当使用jQuery时,您的end()示例似乎是有意义的,因此我可能不得不重新考虑。)

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

https://stackoverflow.com/questions/27253034

复制
相关文章

相似问题

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