龙空技术网

前端基础教程:再谈JavaScript的作用域

鹅是程序猿 118

前言:

现时我们对“前端作用域”大概比较重视,看官们都想要剖析一些“前端作用域”的相关知识。那么小编在网摘上搜集了一些对于“前端作用域””的相关资讯,希望看官们能喜欢,看官们一起来学习一下吧!

作用域作为最重要的概念之一,初学者往往会有一些疑惑,小编我从浅显处入手,可能更有助于对于概念的入门和深入理解。

作用域通俗的讲就是变量或者函数的“势力范围”,在此范围内,变量可以被引用,函数可以被调用。

JavaScript具有两种作用域:

(1)全局作用域。

(2)函数作用域。

特别说明:ES2015新增块级作用域。

函数中声明的变量是局部变量,当然必须使用var声明,否则也是一个全局变量,代码如下:

function func(){var webName="小熊爱前端";address="海岛市南区";}

两个变量虽然都是在函数中声明,但webName是局部变量,address是全局变量,因为address没有用var声明,默认就当成全局变量,所以大家一定要养成好习惯,声明变量时候务必带上var。

全局变量在整个代码中都是可见的,局部变量仅能在声明变量的函数(包括嵌套在其中的函数)中使用。

再来看一段代码:

function func(){ var webName="小熊爱前端"; function funcInner() { var target="分享互助"; }}

变量webName可以在函数func和funcInner中应用,但变量target只能够在funcInner中使用。

实际上,全局变量是window对象的属性,"势力范围"是整个代码。

代码实例如下:

var antzone="分享互助"`;function func(){var webName="小熊爱前端";}console.log(window.antzone);

作用域链:

作用域链是查找一个变量的时候,一层一层的向上形成的查找轨迹,类似于一个链子一样。

代码实例如下:

var antzone="小熊爱前端"`;function box(){ var a="box函数"; function middle() { var b="middle函数"; function inner() { console.log(antzone); } inner(); } middle();}box();

将要打印antzone时,首先会在当前inner函数作用域中查找,没有找到,则向上在middle函数作用域中查找,没有查找到,再向上在box中查找。依然没有查找到,最后在全局作用域中查找,这样就形成作用域链效果。

如果您觉得这个文章能帮助到你,那么请分享并转发。

标签: #前端作用域