当我执行下面的代码时,它会打印" undefined"两次。 我期待它会引起错误,因为变量没有定义,而且还有使用严格的'声明在顶部。
'use strict';
var a;
console.log(typeof a);
console.log(typeof b);
任何人都可以解释为什么它没有引发错误吗?
答案 0 :(得分:2)
实际上在JavaScript undefined
中意味着该变量尚未定义,所以基本上是:
typeof a
返回undefined
,因为变量a
仅被声明但尚未初始化(没有赋值给它)。
typeof b
返回undefined
因为尚未声明变量b
,因此未定义。
如果没有为变量赋值,则会获得类型undefined
,因为无法确定类型。
因此,如果您查看 MDN typeof specification ,您会看到:
typeof
运算符返回一个字符串,指示未评估操作数的类型,如果您看到类型表,则可以看到undefined
是基本类型,并且{{}}可能的返回值之一1}}。
<强>示例:强>
您可以在示例部分中看到未定义的返回:
//未定义
typeof undefined ==='undefined';
typeof declaredButUndefinedVariable ==='undefined';
typeof undeclaredVariable ==='undefined';
注意:强>
正如评论中所述,这只与JavaScript语法有关,与nodejs没有任何关系。
答案 1 :(得分:-1)
您不使用“a”中的函数,也不使用除参数之外的任何函数,这些函数未定义。 Typeof仅检查变量的内存位置。
答案 2 :(得分:-1)
undefined
是primitive data type,
这是typeof
运算符可以返回的可能选项之一
它可以返回的其他选项是:
boolean
number
string
function
object
symbol