函數(shù)作用域在JavaScript體系里是非常重要的一個(gè)環(huán)節(jié)背桐,很多新人朋友們對(duì)于函數(shù)作用域的指向也是有點(diǎn)懵逼,今天我就稍微舉個(gè)案例來和新人朋友們分享下搅荞,關(guān)于我對(duì)函數(shù)作用域指向的一些小小的心得和理解。
通常來講函數(shù)作用域處于什么位置,不是看該函數(shù)在什么地方調(diào)用菇怀,而是我們要看該函數(shù)在什么地方定義的,例如:
//全局作用域
let a = 3;
function fn(){
//函數(shù)作用域1
alert(a)
}
function fn2(){
//函數(shù)作用域2
let a = 2;
fn();
}
fn2()
在上面的代碼中我們可以看到其中的函數(shù)作用域1里的a最終指向的是全局作用域 里的變量值3蒸其。
如下圖中fn()最終指向的是3
這是因?yàn)椋汉瘮?shù)作用域1里的a是全局環(huán)境里的子集敏释,因此函數(shù)作用域1里的a最終指向的是全局作用域 里的變量值3
但是問題來了
我們要讓函數(shù)作用域1里的a指向函數(shù)作用域2 里的變量值2,該如果做摸袁?
很簡(jiǎn)單我們只需要利用傳參就可以了钥顽,具體為設(shè)置形參a,代碼如下
//全局作用域
let a = 3;
function fn(a){
//函數(shù)作用域1
alert(a)
}
function fn2( ){
//函數(shù)作用域2
let a = 2;
fn(a);
}
fn2()
最終顯示為
本文來源于本作者的博客:https://blog.csdn.net/webdaoyang/article/details/82526297
更多的前端知識(shí)請(qǐng)點(diǎn)擊博客:https://blog.csdn.net/webdaoyang