1

いくつかのサイトのJavascriptコードを探していると、これが表示されます

function hrefLeftMenu() {
    var x = true;
    for (i in info) {
        $(".leftmenu ul").append("<li" + (x ? " class='active'" : "") + " onclick='openAnInfo(\"" + i + "\", this);'> - " + info[i].title + "</li>");
        x = x??!x;
    }
    openAnInfo("0", ".lelelesakineyy");
}

javascriptで何をしますか?なぜコーダーはこの演算子を使用したのですか?

ありがとう。

4

4 に答える 4

12

javascriptで何をしますか?

構文エラーをスローします。

> x = x??!x;
SyntaxError: Unexpected token ?

なぜコーダーはこの演算子を使用したのですか?

(「彼らは間違いを犯した」を超えて)合理的な推測をすることは、より多くの文脈を必要とするでしょう。確かに言うには、心を読む必要があります:)

于 2012-08-30T12:33:26.393 に答える
4

JavaScriptでは、これは有効なコードではありません。ただし、シーケンスはCに三重音字??!として存在します(存在しますか?)。たぶんそれはJavaScriptコードではないか、古代のCコードからの移植が不十分でした。しかし、それでも、有用なステートメントとは言えません。|x = x | x

編集:今の質問に少し文脈があるので、その推測はおそらく間違っています。友人は、シーケンスx??がタイプミスであり、その後、中間のマングリングによってバックスペースが文字に変わった場所でそれを修正しようとし(端末で入力するときやSSH経由で入力するときは珍しいことではありません)、問題の行はであるはずだと提案しましたx = !x

于 2012-08-30T12:38:32.703 に答える
3

間違いだと思います。彼らはメニューを生成していxて、アイテムをアクティブとして設定するために使用されており、デフォルトで最初のアイテムを選択したいようです。彼らxは最初は真であり、残りは偽でありたいと思っています。おそらく次のようなものになるはずでした

x = x?!x:x; // If first time through, then set x = false for the rest

別名

x = false; // Set x = false for the rest

しかし、混乱/泥だらけの思考は、過度の複雑化につながりました。

于 2012-08-30T12:44:22.423 に答える
1

これは間違いでしたか?

これですか?

x= x?x:!x;
于 2012-08-30T12:39:36.590 に答える