1.函数允许访问函数外的数据;
2.整个代码结构中只有函数才可以限定作用域;
3.作用规则首先使用提升规则分析;
4.如果当前作用域规则中有名字了,就不考虑外面的名字
例子1:(规则1)
var num = 123;
function foo (){
console.log(num);
}
foo(); //输出123
例子2:(规则2,3)
if(false){
var num = 123;
}
console.log(num); //输出undefine。 { }不能限定作用域,且num已经被定义,但是没有被赋值
例子3:(规则4)
var num =123;
function func1(){
var num =456;
console.log(num);
}
func(); //输出456
console.log(num); //输出123