在 JavaScript 中,undefined 和 not defined 有什么区别?


JavaScript 中,变量可以有两种主要方式变为“undefined”。第一种是在声明变量时没有赋予它值。第二种是尝试访问一个不存在的变量。

JavaScript 中的 Undefined

  • 当一个变量被声明但没有赋值时,它会自动被赋予“undefined”的值。如果忘记给变量赋值,或者有意不赋值(例如,等待用户输入),都可能发生这种情况。

  • 如果尝试访问一个不存在的变量,也会得到“undefined”的值。如果打错了变量名,或者尝试访问超出作用域的变量,都可能发生这种情况。

示例 1

以下是带解释的示例。

<html>
<head>
   <title>Examples</title>
</head>
<body>
   <div id="result"></div>
   <script>
      var foo;
      document.getElementById("result").innerHTML = foo;
   </script>
</body>
</html>

在上面的示例中,变量“foo”被声明了,但没有赋予值。因此,当我们尝试访问它时,会返回“undefined”的值。

示例 2

<html>
<head>
   <title>Examples</title>
</head>
<body>
   <div id="result"></div>
   <script>
      var myObj = {};
      document.getElementById("result").innerHTML = myObj.foo;
   </script>
</body>
</html>

在上面的示例中,我们尝试访问对象“myObj”的属性“foo”。但是,由于此属性不存在,因此会返回“undefined”的值。

JavaScript 中的 Not defined

“not defined”的值类似于“undefined”,都表示变量不存在。但是,两者之间存在细微的差别。

not defined”通常是由拼写错误或尝试访问超出作用域的变量引起的。“undefined”通常是由忘记给变量赋值引起的。

示例

以下是带解释的示例。

<html>
<head>
   <title>Examples</title>
</head>
<body>
   <div id="result"></div>
   <script>
      var myObj = {};
      try {
         document.getElementById("result").innerHTML = myOb.foo;
      }
      catch(err) {
         document.getElementById("result").innerHTML = err;
      }
   </script>
</body>
</html>

在上面的示例中,我们尝试访问对象“myOb”的属性“foo”。但是,由于此对象不存在,因此会返回“myOb 未定义”的 ReferenceError。

undefined 和 not defined 之间的区别

undefined”和“not defined”的主要区别在于,“undefined”是可以赋值给变量的值,而“not defined”表示变量不存在。

另一个区别是,“undefined”通常是由忘记给变量赋值引起的,而“not defined”通常是由拼写错误或尝试访问超出作用域的变量引起的。

结论

总之,“undefined”和“not defined”是 JavaScript 中的两个不同的值。“undefined”表示变量已声明但未赋值,而“not defined”表示变量不存在。

更新于: 2022年7月1日

6K+ 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告