JavaScript函数之作用域

作者: 微语博客 | 来源:发表于2021-07-26 00:27 被阅读0次

在 JavaScript 中, 作用域为可访问变量,对象,函数的集合。根据访问范围的不同,作用域可分为全局作用域和局部作用域。全局作用域的变量在JS程序中的任何位置都可访问,局部作用域有函数作用域,块级作用域和循环作用域等,本文将对函数作用域作个基本介绍。

局部作用域

变量在函数内声明,变量为局部作用域。局部变量:只能在函数内部访问。

首先我们先创建一个函数,使用var关键字定义一个局部变量,在不同作用域访问,看看会发生什么。

function myFun() {
    var num = 10;
    console.log(num);//10
}
myFun();
console.log(num);//undefined

在函数外部访问函数内部定义的变量是报错了,错误类型是变量未定义,所以函数内部形成了局部作用域。

访问函数作用域

我们知道了函数内部会形成一个封闭的作用域,如果要访问局部变量呢,很简单粗暴的方法就是返回变量。

function getNum() {
    var num = 10;
    console.log(num);//10
    return num;//返回局部
}
getNum();
console.log(getNum());//10

使用return关键字可以返回函数需要返回的值,在函数调用执行时返回。

函数作用域的应用

由于ES6之前没有块级作用域,所以也可使用函数封装作用域。在上面的例子中,我们访问到了函数内部变量,但是如果只是返回变量的话,也比外部定义变量强不了多少。我们可以在函数的内部返回对象和函数,因此实现功能的封装,隐藏实现细节,调用即可。

function getNum() {
    var obj = {
        "num" : 10
    }
    console.log(obj.num);//10
    return obj;
}
getNum();
console.log(getNum().num);//10

或者返回对象方法

function getGreet() {
    var obj = {
        "greet" : function (){
            console.log("hello world");
        }
    }
    obj.greet();//hello world
    return obj;
}
getGreet();
console.log(getGreet().greet());//hello world

嵌套函数作用域

嵌套函数对局部变量的访问也遵从上面的原则,外面的访问不到里面的,访问也需要将值返回,这样也可以嵌套多层。

function myFun(n) {
    var num = 10;
    function inFun(){
        var num2 = 20;
        console.log(num);//10
    }
    console.log(num2);//undefined
}

相关文章

  • 执行上下文、作用域链、this、闭包

    javascript 执行的是词法作用域,即静态作用域。与之相对的是动态作用域。 静态作用域:函数的作用域在函数定...

  • JavaScript函数作用域和声明提前

    函数作用域 JavaScript 中没有块级作用域,JavaScript 取而代之地使用了函数作用域。变量在声明它...

  • JavaScript作用域学习笔记

    @(JS技巧)[JavaScript, 作用域] JavaScript作用域学习笔记 概念: 作用域就是变量与函数...

  • js 变量作用域问题 以及 let

    JavaScript中有以下两种作用域 全局作用域函数作用域全局作用域是函数之外(最外层代码)的作用域。在函数之外...

  • 07-JavaScript作用域和预解析

    JavaScript作用域 JavaScript中有全局作用域和局部作用域 相同作用域内不能有同名的变量和函数 不...

  • JavaScript 作用域和作用域链

    JavaScript 作用域 作用域就是变量与函数的可访问范围。在JavaScript中,变量的作用域有全局作用域...

  • JavaScript 作用域

    在 JavaScript 中, 作用域为可访问变量,对象,函数的集合。 JavaScript 局部作用域 函数内声...

  • JavaScript 作用域

    1.在 JavaScript 中, 作用域为可访问变量,对象,函数的集合。 JavaScript 函数作用域: 作...

  • 作用域、执行环境、作用域链

    作用域,之前有介绍过,JavaScript无块级作用域,只有函数作用域,简单点说就是JavaScript的作用域就...

  • 作用域

    作用域 javascript没有块级作用域 只有函数可以创建的作用域

网友评论

    本文标题:JavaScript函数之作用域

    本文链接:https://www.haomeiwen.com/subject/iurwmltx.html