理解Javascript Typeof

当我执行下面的代码,它打印“未定义”两次。 我期待它会引发错误,因为variables没有被定义,并且在顶部也有严格的使用声明。

'use strict'; var a; console.log(typeof a); console.log(typeof b); 

任何人都可以解释为什么它没有提出一个错误?

实际上在JavaScript中undefined意思是variables还没有定义,所以基本上:

  • typeof a返回undefined因为variablesa仅被声明,但尚未初始化(没有赋值)。

  • 并且typeof b返回undefined因为variablesb尚未声明,所以没有定义。

如果没有赋值给一个variables,它的types是undefined因为type不能被确定。

所以,如果你检查MDNtypes的规范,你会看到:

typeof运算符返回一个string,指示未被评估的操作数的types,如果您看到types表,则可以看到undefined是一个基本types和typeof的可能返回值之一。

例子:

你可以在例子部分看到未定义的返回值:

//未定义

typeof undefined ==='undefined';

typeof declaredButUndefinedVariable ==='undefined';

typeof undeclaredVariable ==='undefined';

注意:

正如评论中所述,这只与JavaScript语法有关,并且与nodejs没有任何关系。

你不使用“a”中的函数,也不使用除了参数之外的任何函数,也不是未定义的。 Typeof只检查variables的内存位置。

undefined是一个原始的数据types ,

这是typeof运算符可能返回的可能选项之一,

它可以返回的其他选项是:

  • boolean
  • number
  • string
  • function
  • object
  • symbol