一. 作用域
分为全局作用域和函数作用域
函数作用域简言之就是:变量在声明他们的函数体以及这个函数体嵌套的任意函数体内都是有定义的。
二 .声明提前
变量在声明之前就已经可用。我们称这种特性为声明提前,也就是函数里的所有变量都被“提前”至函数体的顶部。
有以下几种方式
1. var a; 即: var a = undefined;
2. a = 1; 即: var a = 1;(全局变量)
3. var a = 1; 即: 前两种的组合
下面陷阱分析:
var v ="yoyo"; //全局变量声明,全局作用域,即:var v = undefined; var v ="yoyo";
(function(){
console.log(v); //由于声明提前,此段代码前有一段var v = undefined; 函数作用域,所以此时输出undefined
var v ="check now"; //此处 var v ="check now";赋值了局部变量;所以下方输出"check now"
console.log(v);
})();