Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 未捕获引用错误和未定义错误之间的区别是什么?_Javascript - Fatal编程技术网

Javascript 未捕获引用错误和未定义错误之间的区别是什么?

Javascript 未捕获引用错误和未定义错误之间的区别是什么?,javascript,Javascript,在以下代码中,有两个“未定义”实例: A: 这会导致控制台显示“a”的“未定义” B: 这将创建“未捕获引用错误:未定义”。在这两种情况下,a都是未定义的,控制台会告诉您。但为什么它会根据上下文选择不同的方式呢?除了undefined和null之外,还有几种形式的“undefined”吗?第一个代码被视为如下,因为 在第二个代码中,a从未定义。尝试访问这些变量将导致抛出ReferenceError 下面是一篇阅读更多有关提升的文章 简单的规则是: 如果变量已声明且未分配任何值,则该变量为未定义

在以下代码中,有两个“未定义”实例:

A:

这会导致控制台显示“a”的“未定义”

B:


这将创建“未捕获引用错误:未定义”。在这两种情况下,a都是未定义的,控制台会告诉您。但为什么它会根据上下文选择不同的方式呢?除了undefined和null之外,还有几种形式的“undefined”吗?

第一个代码被视为如下,因为


在第二个代码中,
a
从未定义。尝试访问这些变量将导致抛出ReferenceError

下面是一篇阅读更多有关提升的文章

简单的规则是:

  • 如果变量已声明且未分配任何值,则该变量为未定义的
  • 如果未定义变量/函数并试图使用它,将抛出引用错误
  • 都是关于你的

    基本上,Javascript会将A块解释为:

    // Variable is declared, but without a value (undefined)
    var a;
    
    b();
    console.log(a);
    
    a = "Hello World!";
    
    function b() {
      console.log("Called b!");    
    }
    

    这就是为什么在第二种情况下会出现错误:变量a没有在任何地方定义。

    也许更好的标题更合适?我在谷歌上搜索并阅读了有关数据类型的内容。不要假设人们不使用谷歌。将来,人们会用谷歌搜索一个产生这个问题的查询,并浪费时间阅读你的陈词滥调“谷歌it”回答,而不是仅仅回答这个问题。我个人认为错误信息应该是“
    a
    未声明”,这肯定会比“未定义”更清楚……)meta:@BarAkiva“只需谷歌一下”的评论不允许出现在Stackoverflow上,因为它们没有用处。尽管如此,阿斯基人通常会提供一些证据,表明他们已经在别处寻找答案,但什么也没找到。我不确定这在这里有多适用,但简而言之,这就是stackoverflow策略。我看不出有什么理由他们会给它贴上这样的标签,因为它让我觉得有一些秘密“未定义”我还没有读到。你更快了。。。该死等等。。从技术上讲,在这个示例中(我在dev工具中测试过),console.log(a)不会抛出引用错误。。。但假设您只是随机执行了console.log(x),它将抛出一个引用错误,因为x从未被声明过……而a是被声明的,只是从未定义过
    b();
    console.log(a);
    
    function b() {
     console.log("Called b!");    
    }
    
    var a; // Declare the variable
    
    // Move function definitions to the top
    function b() {
        console.log("Called b!");
    }
    b();
    console.log(a); // Undefined, no value assigned yet
    
    a = "Hello World!";
    
    console.log(a); // Hello World!
    
    // Variable is declared, but without a value (undefined)
    var a;
    
    b();
    console.log(a);
    
    a = "Hello World!";
    
    function b() {
      console.log("Called b!");    
    }