js 作用域、作用域链(js的作用域和作用域链)
js 作用域、作用域链(js的作用域和作用域链),本文通过数据整理汇集了js 作用域、作用域链(js的作用域和作用域链)相关信息,下面一起看看。
最近在实现一些具体的函数时,突然发现js中的作用域很奇怪,就把相关内容录了下来,供大家分析。今天我就来详细说说javascript中的作用域。事实上,js中有三个作用域:
全球范围:
本地范围:
级别范围:
window对象上存在的所有属性和方法都是全局范围的,可以被整个程序使用。只有函数才会有作用域,即关键字var在函数内部定义的变量是局部作用域,只在当前函数内部生效,不能在函数外部访问。接下来,让让我们具体看一下例子来加强我们的理解。
变量的范围主要是我们在使用变量时经常遇到的问题。当我们使用变量时,变量的范围可以是有效的。一般来说,变量的作用域分为两种:全局作用域和局部作用域。
以下是示例代码:
//全局变量范围
var a=10
console . log(贯穿js # ,a);
函数fn() {
console . log(用于fn函数a);
}
fn()
一个函数可以生成一个作用域。如果函数内部定义的变量只能用于当前函数本身,而不能用于外部,这就是局部变量。
函数fn() {
var b=200
console . log(用于fn函数b);
}
fn()
console . log(贯穿js # ,b);
函数可以生成作用域,作用域只能在当前函数内部使用,相当于局部变量。
函数fn() {
var b=10
}
fn()
console . log(贯穿js # ,b);
在特殊情况下,局部变量可以提升为全局变量。这时候就可以对外获取相关变量B,然后B就变成了全局变量。
函数fn() {
b=10
}
fn()
console . log(贯穿js # ,b);
最初,javascript中没有块级作用域,但是ES6中增加了一个新的块级作用域。块级范围由{}包装,包括if和for之后的{}。
//ES 5中没有块级作用域,变量A可以在整个js中获取
如果(真){
var a=10
}
console . log(a);
此时,将var改为let (let和const具有块级作用域)。
//ES6: let const有块级作用域,只能在{}生效
如果(真){
设b=20
}
console . log(b);//错误:未定义b
结果:
本期为大家分享的js中的三个范围场景主要是针对常见场景,
更多js 作用域、作用域链(js的作用域和作用域链)相关信息请关注本站。