Javascript设置值如果

时间:2012-08-06 15:48:38

标签: javascript backbone.js

Backbone.js

的另一项功能
escape: function(attr) {
  var html;
  if (html = this._escapedAttributes[attr]) return html;
  ...

如上所述,这样做有什么好处?,不是按照以下方式进行的?

var html = this._escapedAttributes[attr];
if( html ) return html;

3 个答案:

答案 0 :(得分:2)

这是优势还是令人困惑,取决于您,您的团队和您的编码惯例。

另一个可能非常有用的例子

function foo( arr, elem ) {
    while( elem = arr.shift() ) {
       console.log( elem * elem );
    }
}

你可以像

一样使用它
foo([5,4,3,2,1]);

同样适用于if statements。有时,在某个条件中为某个变量赋值可能有意义或有用,直接在案例中进行访问。当然,对于一些不熟悉它的人来说,这可能不方便,但是,如果你的约定和你的团队对这样的事情达成一致意见,它可能会非常整洁。

其他语言提供此功能"功能"默认情况下。例如,像$_->这样的特殊变量名称会自动引用你手上的东西。

答案 1 :(得分:1)

没有优势*,只是愚蠢。你知道,不可读性是新时尚。

*除非您的编码约定是永远不要同时分配和声明变量。但我认为这不适用于此。

答案 2 :(得分:1)

老实说,这样做没有值得注意的优点。这降低了可读性并使代码难以维护。

如果你不得不将一个值重新分配给html变量(就像它已经声明的那样),它可能会略微减少代码文件的大小,尽管这种减少完全可以忽略不计,除非由于一些未知和可怕的原因它已经完成了数千次。例如,以下内容会更短:

function escape() {
    var html = "tree";
    // interact with html variable, and later on get to this:
    if (html = this._escapedAttributes[attr]) return html;
}

比这个:

function escape() {
    var html = "tree";
    // interact with html variable, and later on get to this:
    html = this._escapedAttributes[attr]
    if (html) return html;
}