作用域
2019-11-28 本文已影响0人
再见噜噜班
作用域
- 解释
官方解释作用域:‘一段程序代码中所用到的名字并不总是有效/可用的,而限定这个名字的可用性的代码范围就是这个名字的作用域。’
通俗地解释作用域:就是一块‘地盘’,一个代码所在的区域。JavaScript中的作用域是静态的,在编写代码时就确定了。 - 作用
隔离变量,不同作用域下即使是同名变量也不会发生冲突。 - 分类
1.全局作用域
2.函数作用域
3.块级作用域(ES6新增)
//全局作用域
var a=1
function foo(){//函数foo的作用域
var a=2
function fn(){//函数fn的作用域
var a=3
}
}
if(true){//ES6块级作用域
let a=4
}
- 作用域链
JavaScript中查找变量的过程是沿着作用域链由内而外的查找,直至全局作用域。 - 习题
//题1
var x = 10
function fn() {
console.log(x) //作用域在函数定义时就已经确定了不改变
}
function show(f) {
var x = 20
f()
}
show(fn) //10
//题2
var fn = function (params) {
console.log(fn)
}
fn()//输出fn函数
var obj = {
fn2:function(){
console.log(fn)
}
}
obj.fn2()//先在内部作用域找,然后去全局作用域找,找到fn函数并输出,如果要找找obj.fn2应该console.log(this.fn2)