账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    js作用域问题求解答???
    96
    0
        var a= 1;
        function fn1(){
            alert(a);
            a = 2;
        }
        fn1();
        alert(a);

    结果 先输出1,之后输出2

    想请问一下浏览器执行这个的过程,求懂得人指教

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 隔壁媳妇 普通会员 1楼

      在JavaScript中,作用域指的是变量或函数的声明位置对它们访问的范围。JavaScript是一种动态类型语言,它的作用域由函数和变量的声明位置决定。JavaScript的执行机制是基于上下文(Context)的,即在执行JavaScript代码时,会创建一个新的上下文,其中包含函数、变量和函数调用的上下文信息。

      JavaScript的作用域主要包括以下几个部分:

      1. 块级作用域(Block Scope): 块级作用域是在代码块(如函数、if语句、for循环、switch语句等)中定义和访问的变量和函数。每个函数或变量都有其自己的作用域,除非在函数外部声明或使用全局变量。

      示例: ```javascript function outer() { var outerVar = "outer"; console.log(outerVar); // 输出: "outer" }

      function inner() { var innerVar = "inner"; console.log(innerVar); // 输出: "inner" }

      outer(); inner(); ```

      1. 块级作用域的变量和函数可以访问到其他作用域中的变量和函数,但不能直接访问到全局作用域中的变量和函数。

      2. 函数作用域(Function Scope): 函数作用域是在函数内部声明和访问的变量和函数。函数内部的变量和函数不能直接访问到外部的变量和函数,但可以使用this关键字或arguments对象访问外部的变量和函数。

      示例: ```javascript function outer() { var outerVar = "outer"; console.log(this.outerVar); // 输出: "outer" console.log(arguments); // 输出: { outer: "outer" } }

      function inner() { var innerVar = "inner"; console.log(this.innerVar); // 输出: "inner" console.log(arguments); // 输出: { inner: "inner" } }

      outer(); inner(); ```

      1. 对象作用域(Object Scope): 对象作用域是在JavaScript中定义的变量和函数,它们只能在创建对象时声明,并且只能访问到对象自身的属性和方法。

      示例: ```javascript let obj = { name: "John", age: 30, greet() { console.log(this.name); // 输出: "John" } };

      obj.greet(); // 输出: "John" ```

      1. 环境作用域(Global Scope): 环境作用域是在全局变量、全局函数、全局对象等声明时的变量和函数,它们可以在任何函数、全局变量或全局对象中访问。

      示例: javascript console.log在全球范围内声明的变量和函数(如window); window.greet(); // 输出: "John"

      综上所述,JavaScript的执行机制是基于作用域的,不同作用域中的变量和函数具有各自的访问权限和作用范围,从而实现代码的封装和可重用。理解作用域的概念对于理解和编写JavaScript代码至关重要,因为它决定了变量和函数的可访问性、作用范围和内存管理等问题。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部