在JavaScript中,输入“undefined”应该有一个值“undefined”。但是,在下面的这个例子中,未声明的xxx的类型为“未定义”,但显然它没有任何价值。 JS没有任何区别,因为xxx中没有值会引发异常。为了保持一致性,JS应该在typeof xxx上引发异常。否则,我们在这里有一个很大的逻辑漏洞。undefined类型的数据没有值?
<!DOCTYPE html>
<html>
<body>
<script>
document.write("Type=" + typeof xxx);
document.write(", Value=");
document.write(xxx);
</script>
</body>
</html>
你的问题没有道理; 'undefined'不是“类型”。 – Pointy
http://www.ecma-international.org/ecma-262/6.0/index.html#sec-typeof-operator - 根据规范,如果变量无法解析,则返回undefined,而不是错误,但如果你想获取变量的值,并且它是无法解析的,那么会抛出'ReferenceError' - 所以这里没有问题 –
好吧,它是低级语言语义上的“类型”,但它不是实际JavaScript编程类型意义上的“类型”。无论如何,[11.4.3](http://www.ecma-international.org/ecma-262/5.1/#sec-11.4.3)就是这个问题的答案。当操作数无法解析时,'typeof'运算符显式返回'undefined'。 – Pointy