JS中的函数作用域是怎样的?

樵夫2021-09-10 16:19

    我们再把变量v放到函数中去:

function show(){
  var v='world';
}
show();
console.log(v); //undefined

    由于show函数是一个函数作用域,“阻挡”外面的代码获取里面变量(并不能阻挡里面的代码获取外面的变量),所以函数外部并不能获取到函数里面的变量v。因此证明了js中只有函数作用域,没有块级作用域。  再来看下面的一段代码:

var v='hello';
function show(){
  console.log(v); //undefined
  var v='world';
}
show();

    很多人看到这边都会很疑惑,不是说这边show函数中能够获取到函数外面的变量的么?但是由于这边是一个函数作用域,而函数作用域存在着变量声明的提前,因此,上面的代码相当于下面的代码:

var v='hello';
function show(){
    var v;
    console.log(v); //undefined
    v='world';
}
show();

    这里把变量v的声明放到了整个函数作用域的最前面,因此显示为undefined。理解了上面的代码,相信下面的代码也不难理解了。

var v = "hello";
(function(){
  console.log(v);
  var v = "world";
})();

    在这里自执行函数形成了函数作用域

    点击图片免费领取课程!

JS中的函数作用域是怎样的?

    以上就是小编为大家整理发布的“JS中的函数作用域是怎样的?”一文,更多相关内容尽在开课吧广场Web教程频道。

免责声明:本站所提供的内容均来源于网友提供或网络搜集,由本站编辑整理,仅供个人研究、交流学习使用。如涉及版权问题,请联系本站管理员予以更改或删除。
有用
分享