JS中的遮蔽效应

文章类型:Javascript

发布者:admin

发布时间:2022-07-24

一:遮蔽效应是什么

在多层的嵌套作用域中可以定义同名的标识符,作用域查找会向上查找,找到第一个匹配的标识符时停止

抛开遮蔽效应,作用域的查找始终是从运行的最内部作用域开始,逐级向外或者说向上进行,直到遇见第一个匹配标识符为止

说白一点,就是内部的标识符遮蔽住了外部的标识符

例子一

	var val='global'
function bar(){
console.log(val) //undefined
var val='inner txt'
console.log(val) // inner txt
}
bar()
console.log(val) // global

例子二

var val='global'
function bar(){
console.log(val) // global
}
function foo(){
var val='inner txt2'
bar()
console.log(val) //inner txt2
}
foo()
console.log(val) // global<br/>

例子一val值为undefined?

这里会涉及到变量提升,在块级作用域中,变量会提升到顶部,声明而未赋值

例子二val为啥为全局值?

作用域的查找是,不管函数在哪个作用域中执行,而查找看的是定义时的作用域,虽然在foo内部执行,但是作用域跟foo是平行块的关系,说白了就是看函数定义时所在位置,而不是调用时

上一篇暂无