var

1:在全局作用域下,使用var定义的变量不可以delete,没有var 定义的变量可以delete.也就说明没有var定义的变量(全局)严格来说不是真正的变量,而是全局对象的属性,因为属性可以通过delete删除,而变量不可以

1 b = 5;
2 var a = 4;
3 console.log(a);//4
4 console.log(b);//5
5 delete a;
6 delete b;
7 console.log(a);//4
8 console.log(b);//“ReferenceError:b is not defined”

2:在函数作用域内 加var定义的变量是局部变量,不加var定义的就成了全局变量。

3:使用var 定义变量还会提升变量声明,即

1 function hh(){
2     console.log(a);
3     var a = 'hello world';//使用var定义
4 }
5 hh()  ;//undefiend
1 function hh(){
2     console.log(a);
3     a = 'hello world';//不使用var定义:
4 }
5 hh()    // 'a is not defined'

这就是使用var定义的变量的声明提前

4:在ES5的'use strict'模式下,如果变量没有使用var定义,就会报错.

 
原文地址:https://www.cnblogs.com/Hale-Proh/p/6714336.html