在JavaScript中单独使用逗号和单独定义变量是否有好处?

Dar*_*don 7 javascript

阅读Crockfords JavaScript样式的元素我注意到他更喜欢定义这样的变量:

var first='foo', second='bar', third='...';
Run Code Online (Sandbox Code Playgroud)

如果该方法有任何好处,那么:

var first='foo';
var second='bar';
var third='...';
Run Code Online (Sandbox Code Playgroud)

显然,后者需要更多的打字,但除了美学外,我想知道是否通过定义前一种风格获得了性能优势.

CMS*_*CMS 11

除了美学和下载足迹之外,另一个原因可能是该var声明需要提升.这意味着无论变量放置在函数中的哪个位置,它都会移动到定义它的作用域的顶部.

例如:

var outside_scope = "outside scope";
function f1() {
    alert(outside_scope) ;
    var outside_scope = "inside scope";
}
f1();
Run Code Online (Sandbox Code Playgroud)

获取解释为:

var outside_scope = "outside scope";
function f1() {
    var outside_scope; // is undefined
    alert(outside_scope) ;
    outside_scope = "inside scope";
}
f1();
Run Code Online (Sandbox Code Playgroud)

因此,以及只有JavaScript具有的函数范围,这就是为什么Crockford建议在单个语句中声明函数顶部的所有变量var,以类似于实际执行代码时真正发生的事情.

  • 这是我非常不同意Crockford的Strictures的地方之一.每次更改函数内部的任何内容时,将变量声明一直保持在顶部是更多的工作,而且很容易犯下一个让你陷入可怕的无意识全局的错误.特别是对于可能具有一个命名变量(通常是"i")的多个独立使用的较长函数. (3认同)

Dav*_*d M 7

由于JavaScript通常下载到客户端浏览器,因此简洁实际上是非常有价值的属性.你必须下载的字节越多,它就越慢.所以是的,除了美学之外,还有一个原因,即使不是一个巨大的美学.

同样,您会看到人们更喜欢较短的变量名称.

就个人而言,我不打扰最小化空白,因为有最小化器可以为你做这种事情(例如在YUI中),并且缺少缩进和间距导致较少的可维护代码.

  • -1:如果你自己提供JavaScript,你应该缩小你的JavaScript.不优化它以加快下载速度,缩短变量名称并在一行中声明变量. (2认同)