web-dev-qa-db-ja.com

Javascriptでは、三項演算子の `?`を次の行に配置しても大丈夫ですか?

私は本当に整列するのが好きですか?そして、次のように、行に収まらない場合の私の三項演算子の::

var myVar = (condition
    ? ifTrue
    : ifFalse
);

ただし、 JSHint は次のように文句を言います。

'?'の前に悪い改行があります

JSHintにこの警告があるのはなぜですか?それが私を保護している厄介なもの(セミコロンの挿入など)はありますか、それともJSHINT構成を安全に変更して無視できますか?

33
hugomg

これは機能し、確かに有効です。これは、ネストされたユースケースなど、より複雑なユースケースで特に役立ちます。

var a = test1
         ? b
         : test2
            ? c
            : d;
20
pimvdb

[〜#〜] update [〜#〜]:この回答は現在古くなっています。どうやらクロックフォードは彼の心を変えます;)

更新については、@ CheapSteaksの answer を参照してください。

あたり クロックフォード

演算子の後に、理想的にはコンマの後にブレークを配置します。演算子の後の中断により、コピーアンドペーストエラーがセミコロンの挿入によってマスクされる可能性が低くなります。

そう:

// this is ok
var myVar = (condition ?
    ifTrue : 
    ifFalse
);

このサンプルコードをJSHintで実行すると、次のようになります。

// this is ok
var myVar = (1==1 ?
    true : 
    false
);
24
Mrchief

あたり クロックフォード

三項演算子は視覚的に混乱する可能性があるので、?疑問符は常に行を開始し、インデントを4スペース増やします。また、コロンは常に行を開始し、?に揃えます。疑問符。状態は親で包まれるべきです。

var integer = function (
    value,
    default_value
) {
    value = resolve(value);
    return (typeof value === "number")
        ? Math.floor(value)
        : (typeof value === "string")
            ? value.charCodeAt(0)
            : default_value;
};
13
CheapSteaks

行の終わりに演算子を配置する必要があります。そうすれば、ステートメントが次の行に続くことがより明確になります。

5
Daniel A. White