3

Backbone.jsの別の関数

escape: function(attr) {
  var html;
  if (html = this._escapedAttributes[attr]) return html;
  ...

以下のようにではなく、上記のようにそれを行うことの利点は何ですか?

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

3 に答える 3

2

これが利点であるか混乱を招くかは、ほとんどあなた、あなたのチーム、そしてあなたのコーディング規約次第です。

これが本当に役立つかもしれない別の例

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

あなたがそれを好きになる場所

foo([5,4,3,2,1]);

同じことが。にも当てはまりif statementsます。場合によっては、条件内の変数に値を割り当てて、ケース内で直接そのアクセス権を取得することが理にかなっている、または役立つ場合があります。もちろん、これに慣れていない人にとっては便利ではないかもしれませんが、繰り返しになりますが、コンベンションとチームがこのようなことに同意すれば、かなりうまくいく可能性があります。

他の言語は、デフォルトでこの「機能」を提供します。たとえば、$_または->単にあなたが手にしたものを自動的に参照するような特別な変数名。

于 2012-08-06T15:58:19.633 に答える
1

利点はありません*、それはばかげているだけです。ご存知のように、読みづらいことが新しい流行です。

*コーディング規約で、変数の割り当てと宣言を同時に行わない場合を除きます。しかし、それはここでは実際には当てはまらないと思います。

于 2012-08-06T15:50:09.807 に答える
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;
}
于 2012-08-06T16:05:46.663 に答える