理解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