[英]What is the logic behind when JavaScript throws a ReferenceError?
我已经使用JavaScript多年了,但是最近一直在努力提高我对该语言的深入了解。 我对JavaScript引发ReferenceError时背后的逻辑感到有些困惑。
例如,这些命令均未引发referenceError,但仍未undefined
写入控制台:
function foobar(foo)
{
var bar = foo;
console.log(bar);
}
foobar();
要么
var foo = undefined;
var bar = foo;
console.log(bar);
要么
var foo;
var bar = foo;
console.log(bar);
但这显然确实在没有写入控制台的情况下在第一行上引发了ReferenceError错误:
var bar = foo;
console.log(bar);
因此,似乎在参数列表中包含一个变量或声明该变量将阻止抛出referenceError -即使该变量仍为“未定义”。
有谁知道引擎盖下发生了什么,或者围绕着什么硬性规定和快速规定? 有谁知道为什么不将这些视为referenceErrors?
使用存在但具有undefined
值的变量与使用不存在且从未声明过的变量是有区别的。
当您尝试引用不存在且尚未声明的内容时,后者将创建引用错误。
另一方面,当你做
var foo;
foo
确实存在,并且已经声明,它的值只是undefined
,因此您仍然可以引用它而不会引发错误。
换句话说,尝试引用未声明的变量将引发引用错误,而引用已声明的变量将永远不会引发引用错误,而不管是否为该变量设置了值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.