0

@user_id@、@reference_id@ などのように識別される変数を持つ誰かの古いコードに出くわしました。ウィキペディアは、「特定の JavaScript 実装では、アットマーク (@) を識別子に使用できます...」と述べていますが、これはどの JS 実装で機能しますか? 私はそれを働かせることができません。

4

4 に答える 4

6

これは完全に有効です:

var π = Math.PI;

これは有効ではないようです:

var @yourName = "Jamund";

これはうまくいきます:

var $yourName = "Jamund";

あなたが退屈で、すべての悲惨な詳細を知りたい場合: http://mathiasbynens.be/notes/javascript-identifiers

あなたの特定の問題については、おそらくコメント(JavaDocはコメントに@を使用し、JSコメントでスタイルが使用されている場合があります)か、サーバー側で処理および置換されることを意図していました。

于 2012-04-24T19:03:18.450 に答える
6

ECMA-262 の 5.1 版の7.6 章では、識別子とは何かを定義しています。許可されていないため@、一部のブラウザがそれを受け入れる可能性がある場合でも、使用しないでください。可能であれば、すべてのブラウザ間で最も広範な互換性を確保するよう常に努力する必要があります。識別子にを使用し@ないことは、決して妨げにはなりません。

 IdentifierName ::
     IdentifierStart
     IdentifierName IdentifierPart

 IdentifierStart ::
     UnicodeLetter
     $
     _
     \ UnicodeEscapeSequence

 IdentifierPart ::
     IdentifierStart
     UnicodeCombiningMark
     UnicodeDigit
     UnicodeConnectorPunctuation
     <ZWNJ>
     <ZWJ>
于 2012-04-24T19:03:59.013 に答える
2

single@は通常 JSDoc パラメータです (コメント ブロック内にある場合)。カスタムテンプレート機能のように@聞こえます。ただし、 が前に付いている名前@@は通常、ネイティブ シンボルです。実際にコードで使用できるとは思いませんが、ドキュメントではそのように言及されることがよくあります。

たとえば、次のようにSymbol.iteratorと呼ば@@iteratorれます。

  • Array.prototype[@@iterator]()
  • TypedArray.prototype[@@iterator]()
  • String.prototype[@@iterator]()
  • Map.prototype[@@iterator]()
  • Set.prototype[@@iterator]()

ただし、コードでは次のように使用します。

var myArray = [1, 2, 3, 4];
var it = myArray[Symbol.iterator]();
console.log(it.next().value); // 1
console.log(it.next().value); // 2

次への参照も表示される場合があります。

于 2016-09-02T21:01:33.883 に答える
0

π は、ギリシャ語で使用される標準的なギリシャ文字であるため、変数名として使用できます。ルールは、$ _ または JavaScript キーワードを除く任意の単語文字を使用できることです。ただし、アクセサーを使用する場合は、空の文字列を含む禁止キーワードを使用できます。var forbidden ={}; forbidden[""]="hello";これは、グローバル オブジェクトで行うこともできwindow['@weird name for a variable'] = "There are very few good reasons to do this!!"ます。このように名前が付けられた変数は、他の変数と同じです。唯一の制限は、これらの値にアクセスするには、文字列で角括弧を使用する必要があることです。

于 2014-08-31T04:20:19.303 に答える