document.write('

解析: JavaScript 中变量声明的作用域是以函数为单位的,在函数内部,有 var 和 没 var 声明的变量是不一样的。有 var 声明的是局部变量,没 var 声明的是全局 变量。在 JavaScript 的函数作用域内,声明的变量或内部函数在函数体内都是可 见的。这意味着,函数在定义之前可能已经可用。函数定义有两种方式,一种 是函数定义表达式,一种是函数声明语句。函数声明语句“被提前”到外部脚本或外部函数作用域的顶部。所以,以这种方式声明的函数,可以被它定义之 前出现的代码所调用。而函数定义表达式中,变量的声明被提前了,但是给变 量的赋值是不会提前的。所以,以表达式方式定义的函数在函数定义之前无法 调用。

在全局作用域内声明变量时,有 var 和没 var 是有区别的。使用 var 语句重 复声明语句是合法且无害的。如果重复声明且带有赋值,那么就和一般的赋值 语句没差别。如果尝试读取没有声明过的变量,JavaScript 会报错。

');