1. 变量定义应该使用var 如果没有使用var前缀 javascript 会隐式声名该变量(隐式声明总是全局变量) 2. 重复声明 会将它作为赋值语句处理 3. javascript 没有块级作用域。在一个函数内定义的变量作用域是整个函数,只是在实际定义改变量位置之前它的值是 undefined。所以把变量定义放在函数开头是个好习惯. 4. 未声明的变量:使用的变量尚未声明,会发生运行期错误。注意:此处的未声明不仅指之前未声明,而且在相同作用域下 和全局变量都未找到。 5. 为定义的变量(称之为未赋值的变量更确切):读取这样的变量会得到undefined值, 给这样的变量赋值javascript会隐式 该变量。 6. 虽然不使用var做前缀,javascript会自动隐式声明为全局变量,但是与程序员手动编写的全局变量有一些区别: (1). function func() { alert(i); var i=10; } 输出undefined,因为第三条. (2). function func() { alert(i); i=10; } 发生i未定义错误,原因猜测:隐式声明是在运行期间,在运行第一句代码时,隐式声明尚未发生,所以发生未定义错误。