2

なぜ彼らはキーワードではないのですか?彼らは何ですか?

true, false, null

クイックアンサーを更新

これらは予約語ですが、キーワードではありません。

仕様によって検証された小さな技術的な違い-ES3とES5

4

4 に答える 4

11

それらはブールリテラルです。仕様から:

BooleanLiteral ::
   true
   false
  • ブールリテラルtrueの値は、ブール型の値、つまりtrue
  • ブールリテラルfalseの値は、ブール型の値、つまりfalse

これは10数値リテラルまたは文字列リテラルに似ています。'foo'

予約語には、キーワードとリテラルが含まれます。単語 truefalse予約語ですが、キーワードではありません。以下はキーワードです:

break    do       instanceof typeof
case     else     new        var
catch    finally  return     void
continue for      switch     while
debugger function this       with
default  if       throw
delete   in       try

このリストには表示されないことに注意しtrueてください。false

キーワード予約語の2つの用語が同じではないことに気づかなかったことが混乱の原因だと思います。すべてのキーワードは予約語ですが、すべての予約語がキーワードであるとは限りません。

于 2012-09-05T20:08:16.477 に答える
5

実際truefalseは、Javascriptの予約語です。

http://ecma-international.org/ecma-262/5.1/#sec-7.6.1

A reserved word is an IdentifierName that cannot be used as an Identifier.

Syntax
    ReservedWord ::
        Keyword
        FutureReservedWord
        NullLiteral
        BooleanLiteral

とで

http://ecma-international.org/ecma-262/5.1/#sec-7.8.2

あなたは読むことができます:

Boolean Literals

Syntax
    BooleanLiteral ::
        true
        false
于 2012-09-05T20:18:16.247 に答える
4

Mozillaドキュメント

さらに、リテラルnull、true、およびfalseは、通常の使用のためにECMAScriptで予約されています。

実際には使用のために「予約」されているように見えますが、なぜ予約語としてリストされていないのかわかりません。

于 2012-09-05T20:08:49.983 に答える
1

非オブジェクトJavaScriptを使用すると、次のように記述できます。

if( sami.value = true) //Noticed i didn't put ==

オブジェクトの場合ブールオブジェクトは、「true」または「false」の2つの値を表します。

次のコードは、myBooleanというブールオブジェクトを作成します。

var myBoolean=new Boolean();

ブールオブジェクトに初期値がない場合、または渡された値が次のいずれかである場合:

0
-0
null
""
false
undefined
NaN

オブジェクトはfalseに設定されています。その他の値の場合は、trueに設定されます(文字列「false」の場合でも)。

于 2012-09-05T20:09:44.320 に答える