在 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+ 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.