在 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”表示变量不存在。