JavaScript 解释undefined和not defined的区别

JavaScript 解释undefined和not defined的区别

在JavaScript中,它们都与内存空间有关,它们之间有一个非常简单的区别。如果正在访问的变量名在内存空间中不存在,则它将被视为未定义;如果变量名在内存空间中存在,但是到目前为止尚未被赋值,则它将是undefined。

undefined: 它是一个具有特殊含义的JavaScript关键字。在我们将值赋给该内存空间之前,每个在内存中占据空间的元素都包含undefined。

让我们了解一下JavaScript代码是如何执行的,以便更清楚地理解情况。在JavaScript中,所有操作都发生在执行上下文中。执行上下文是一小块单独的区域,其中代码被执行,变量获得内存空间。

JavaScript代码执行有两个阶段:

  1. 第一阶段是内存分配阶段,在此阶段,所有变量和函数定义都被存储在内存堆中。在这个阶段,JavaScript将undefined赋给每个变量。

  2. 第二阶段是执行阶段的线程,在此阶段,JavaScript文件中的代码被执行。

    在程序达到我们为该变量赋值的那一行之前,每个变量都保持undefined值。在那一行之后,变量的undefined值将被原始值替换。

示例1: 将创建全局执行上下文,在内存分配阶段, var a 将在内存中占据空间,并且JavaScript会将undefined赋给它。在执行线程中,JavaScript会遇到第一行console.log(a),由于我们尚未为a赋值,因此将在控制台打印undefined。在下一行,我们将5赋值给a,因此变量a不再是undefined,而是包含值5。因此,下一次无论我们如何访问变量a,它都不会被计算为undefined,而是打印a的实际值。

HTML

<script> 
  console.log(a); 
  var a = 5; 
  console.log(a); 
</script>

输出(在控制台中):

undefined
5

附加说明:

  1. 如果你将一个函数的调用分配给一个变量,并且这个函数没有返回任何内容,那么这个变量将变成undefined
  2. 你可以显式地将undefined赋值给任何变量,但在意外的情况下使用语言关键字是不好的做法。

未定义: 在JavaScript中,当有人访问不在内存堆中的变量时,JavaScript会抛出其中一个引用错误。

示例2: 首先,将创建全局执行上下文,在内存分配阶段,变量”a”将在内存中分配空间,JavaScript会默认将undefined赋值给”a”。在执行线程时,”console.log(a)”将输出undefined。在下一行,我们将数字5分配给变量a。在控制台中,将打印出数字5。当JavaScript遇到”console.log(b)”时,它会在执行上下文的内存堆中搜索”b”,但找不到,JS引擎将抛出一个带有消息”Reference Error”的异常,消息内容为”b未定义”。当JavaScript遇到引用错误时,将停止执行。

HTML

<script> 
  console.log(a); 
  var a = 5; 
  console.log(a); 
  console.log(b); 
</script> 

输出:

JavaScript 解释undefined和not defined的区别

undefined和not defined之间的区别

undefined not defined
它的工作原理类似于在代码中声明一个变量,但在打印变量值之前未赋值 它的工作原理类似于没有声明变量,然后尝试调用该变量。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程