1.js有两种作用域:全局作用域和函数作用域
- 内部的作用域能访问外部,反之不行。访问时从内向外依次查找。
- 如果在内部的作用域中访问了外部,则会产生闭包。。
- 内部作用域能访问的外部,取决于函数定义的位置,和调用无关
var a = 1; // 全局作用域
function b() { // **函数声明**
var d = 2 // 函数作用域
console.log(a)
}
var c = function(){ // 表达式函数
console.log(a)
}
2.作用域内定义的变量、函数声明会提升到作用域顶部
// var a // 相当于这样
console.log(a) // undefined
var a = 1;
练习题
var b=2;
var a=1;
function qwe(){
console.log(a)
function asd(){
var a =3
console.log(a,b)
}
asd()
}
qwe()
//1\3\2