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不会出现在此列表中。

我认为您的困惑来自于没有意识到这两个术语关键字保留字是不一样的。每个关键字都是保留字,但并非每个保留字都是关键字。

于 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 ==

如果是 object 布尔对象代表两个值:“true”或“false”。

以下代码创建一个名为 myBoolean 的布尔对象:

var myBoolean=new Boolean();

如果布尔对象没有初始值,或者传递的值是以下之一:

0
-0
null
""
false
undefined
NaN

对象设置为假。对于任何其他值,它都设置为 true(即使使用字符串“false”)!

于 2012-09-05T20:09:44.320 回答