美文网首页
js变量作用域

js变量作用域

作者: angelwgh | 来源:发表于2016-11-24 20:46 被阅读0次

title: 变量作用域
date: 2016-11-24 19:58:57
tags: javascript
categories:

  • javascript

静态作用域

  • 又称此法作用域
  • 由程序定义的位置决定
var x = 10 ;
function foo(){
    alert(x);
}
function bar(){
    var x = 20;
    foo();
}

bar()

这里执行foo()函数时,由于其内部没有定义x,程序就会到其外层作用域(全局)寻找

动态作用域

  • 由程序运行的时刻决定

JS变量作用域

  • js使用静态作用域
  • js没有块级作用域(全局作用域,函数作用域)
  • ES5中使用词法环境管理静态作用域

词法环境

  • 环境记录
    • 形参
    • 函数声明
    • 变量
  • 对外部环境的引用(outer)

环境记录初始化-声明提前
全局代码或者函数代码执行前,先把函数声明、变量定义到环境记录里面

词法环境-width

var foo = "abc";
width ({
    foo: "bar"
    }) {
        function f(){
            alert(foo);
        };
        (function(){
            alert(foo);
        })();
        f();
    }

with传入一个对象,并把这个对象定义到临时词法环境里面,创建一个临时作用域
这里函数表达式会使用这个作用域,而函数声明还是使用全局作用域

词法环境 try-catch

try{
    var e = 10;
    throw new Error();
}catch(e){
    function f(){
        alert(foo);
    };
    (function(){
        alert(foo);
    })();
    f();
}

catch会创建一个临时环境,执行匿名函数是会使用这个临时环境,而函数声明的环境还是指向全局环境

带函数名称的函数表达式

(function A(){
    A = 1;
    alert(A);
    })()

这里在执行时换创建一个新的词法环境,把A定义到这个环境记录里,并且A无法被修改,所以这里语句 A=1没有效果

相关文章

  • 变量作用域

    变量作用域:静态作用域、动态作用域JS变量作用域:JS使用静态作用域JS没有块级作用域(全局作用域、函数作用域等)...

  • js中作用域与作用域链

    js中作用域与作用域链 作用域 *作用域基本概念 作用域一般指变量的作用范围,变量分为全局变量和局部变量,对应的作...

  • 作用域与变量提升

    作用域与变量提升 作用域 JS中变量的作用域有全局作用域和局部作用域两种,作用域简单来讲就是变量与函数的可访问范围...

  • 闭包

    导学:变量作用域:全局作用域、局部作用域 js中,函数内部可以直接读取全局变量 *链式作用...

  • JavaScript快速上手:关于闭包的知识分享

    JS中变量的作用域 在理解闭包之前,我们得弄清楚JS中变量的作用域原理,它分为全局作用域和局部作用域,它有一...

  • JavaScript快速上手:关于闭包的知识分享

    01 JS中变量的作用域 在理解闭包之前,我们得弄清楚JS中变量的作用域原理,它分为全局作用域和局部作用域,它有一...

  • 浅谈JS作用域链

    浅谈JS作用域链 作用域 作用域(scope)就是变量访问规则的有效范围。作用域外,无法引用作用域内的变量;离开作...

  • JS高级-闭包、沙箱

    作用域,作用域链,预解析 变量:局部变量、全局变量 作用域:变量的使用范围 js中没有块级作用域,一对括号中定义的...

  • JavaScript作用域学习笔记

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

  • 2019-08-13JS里面的作用域Scope

    作用域指一个变量的作用范围。 JS的作用域 在JS中,有两种作用域 全局作用域直接编写在script标签中 JS代...

网友评论

      本文标题:js变量作用域

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