なぜ彼らはキーワードではないのですか?彼らは何ですか?
true, false, null
クイックアンサーを更新
これらは予約語ですが、キーワードではありません。
仕様によって検証された小さな技術的な違い-ES3とES5
なぜ彼らはキーワードではないのですか?彼らは何ですか?
true, false, null
クイックアンサーを更新
これらは予約語ですが、キーワードではありません。
仕様によって検証された小さな技術的な違い-ES3とES5
それらはブールリテラルです。仕様から:
BooleanLiteral :: true false
- ブールリテラル
true
の値は、ブール型の値、つまりtrue
。- ブールリテラル
false
の値は、ブール型の値、つまりfalse
。
これは10
、数値リテラルまたは文字列リテラルに似ています。'foo'
予約語には、キーワードとリテラルが含まれます。単語 true
とfalse
は予約語ですが、キーワードではありません。以下はキーワードです:
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つの用語が同じではないことに気づかなかったことが混乱の原因だと思います。すべてのキーワードは予約語ですが、すべての予約語がキーワードであるとは限りません。
実際true
にfalse
は、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
さらに、リテラルnull、true、およびfalseは、通常の使用のためにECMAScriptで予約されています。
実際には使用のために「予約」されているように見えますが、なぜ予約語としてリストされていないのかわかりません。
非オブジェクト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」の場合でも)。