gpt4 book ai didi

javascript - 测试 javascript 中 undefined variable /可能的 javascript bug?

转载 作者:行者123 更新时间:2023-12-02 19:46:34 26 4
gpt4 key购买 nike

所以我一直在为我正在设计的网站使用javascript,我知道令人震惊的是,我试图找到一种方法来测试变量是否不存在或未定义。在经历了这个之后,我认为未定义和不存在是两件不同的事情。另外,我认为我发现错误的可能性极小,但也许对 Javascript 有更好了解的人可以向我解释为什么下面的代码会这样工作。

<script type="text/javascript">
var t1="";
var t2;
if (t1==undefined) {document.write("t1 is undefined");}
if (t2==undefined) {document.write("t2 is undefined");}
</script>

上面的代码返回“t2未定义”。

<script type="text/javascript">
var t1="";
if (t1==undefined) {document.write("t1 is undefined");}
if (t2==undefined) {document.write("t2 is undefined");}
</script>

我相信第二个代码崩溃了。那么在第一个代码中 t2 存在但未定义?在第二个代码中它需要存在才能取消定义?我只是想如果我不写“var t2;”然后对其进行测试,它将是未定义的。希望我已经足够解释这个问题了。

最佳答案

这不是一个错误。事实上,typeof 运算符是唯一可以使用未声明的变量而不会出现错误的地方。

查看我的回答 Internet Explorer: "console is not defined" Error详细解释

编辑:

这就是 specs 中的定义方式:

The production UnaryExpression : typeof UnaryExpression is evaluated as follows: 1. Let val be the result of evaluating UnaryExpression.
2. If Type(val) is Reference, then
a. If IsUnresolvableReference(val) is true, return "undefined".
...

在其他地方,IsUnresolvableReference==true 都会导致错误。

关于javascript - 测试 javascript 中 undefined variable /可能的 javascript bug?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9817488/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com