document.write('

解析: 根本的区别在于,undefined 是 JavaScript 语言类型,而 undeclared 却是一种 JavaScript 语法错误。

在 JavaScript 中,有两个表示“空”的值:undefined 和 null,其中比较有用的 是 undefined。undefined 是一个值为 undefined 的类型。JavaScript 语言也定义了 一个全局变量,它的值是 undefined,这个变量也被称为 undefined。 但是这个变 量不是一个常量,也不是一个关键字。这意味着它的值可以轻易被覆盖。为了 避免可能对 undefined 值的改变,一个常用的技巧是使用一个传递到匿名包装器 的额外参数。在调用时,这个参数不会获取任何值。

而 undeclared 则是一种语法错误,其实访问 undeclared 的变量并非会中断浏览 器执行。在浏览器运行上下文中,undeclared 出来的变量简单可以认为没有 var a 这 样定义变量。JavaScript 引擎执行的时候,由于无法找到其对应的上下文(scope), 所以会简单地认为该变量是全局的变量,就是会把该变量定义到 window 中去。

');