JavaScript变量的易错点

var a = 1 
window.b = 2
c = 3

通过window或者直接声明的变量是全局变量,但是如果是通过var声明的变量如果在函数作用域内是不能被外面的访问到的。

JavaScript的作用域只有函数作用域或者全局作用域,没有块级作用域

console.log(a) // undefined 变量提升
var a = 1
console.log(a) // 1

这里第一次的输出结果是undefined,第二次是1,原因是虽然a的定义是在第一次的输出之后,但是这个时候出现的变量提升( hoisting )

console.log(a) // Uncaught ReferenceError: a is not defined 全局变量不会做变量提升
a = 1
console.log(a) // 1

但是全局变量就不会出现这样的情况

var a = 1;
window.b = 2 
c = 3
console.log(a)  // 1
console.log(b)  // 2
console.log(c)  // 3

delete a;
delete b;
delete c;

console.log(a); // 1
console.log(b); // Uncaught ReferenceError: b is not defined
console.log(c); // Uncaught ReferenceError: c is not defined

delete只会删除全局变量,不会删除var声明的变量

posted @ 2018-02-07 14:14  wynnzen  阅读(128)  评论(0编辑  收藏  举报