1、var声明作用域

  1. function test(){
  2. var message = 'hi';
  3. }
  4. test();
  5. console.log(message); // 错误,此时的message是局部变量
  1. function test(){
  2. message = 'hi';
  3. }
  4. test();
  5. console.log(message); // 正确,此时的message是全局变量
  6. tips:虽然可以通过省略var操作符来定义全局变量,但是不推荐这么做

如果需要定义多个变量,可以在一条语句中用逗号分隔每个(及可选的初始化)

  1. var message = 'hi',
  2. found = false,
  3. age = 20;

2、var声明提升

使用var时,下面的代码不会报错,这是因为使用这个关键字声明的变量会自动提升到函数作用域顶部:

  1. function test(){
  2. console.log(age);
  3. var age = 26;
  4. }
  5. test(); // undefined

之所以不会报错,是因为ECMAScript在运行时把它看成等价于如下代码:

  1. function test(){
  2. var age;
  3. console.log(age);
  4. age = 26;
  5. }
  6. test();