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的作用域和作用域链)相关信息请关注本站。