美文网首页前端,数据库学习
学习笔记《JS作用域和作用域链》

学习笔记《JS作用域和作用域链》

作者: Julian1009 | 来源:发表于2016-10-10 23:22 被阅读32次

    本文大多由网友整理,本人参考后自己略加总结、收纳,不喜勿喷。

    Javascript的作用域

    1. 全局作用域(Global Scope)

    在代码任何位置都能访问到的对象都具有全局作用域,一般有3中情况:

    (1)最外层函数、最外层函数之外定义的变量拥有全局作用域,代码如下:
    var authorName = "山边小溪";
    function doSomething(){
    var blogName = "梦想天空";
    function innerSay(){
        alert(blogName);
    }
    innerSay();
    }
    alert(authorName);//山边小溪
    alert(blogName);//脚本报错
    doSomething();//梦想天空
    innerSay()//脚本报错
    
    (2)所有没有定义而直接赋值的变量拥有全局作用域,代码如下:
    function doSomething(){
    var authorName = "山边小溪";
    blogName = "梦想天空";
    alert(authorName);
    }
    doSomething(); //山边小溪
    alert(blogName);//梦想天空
    alert(authorName);//脚本报错
    

    其中blogName没有定义直接赋值就拥有全局作用域,而调用authorName就会报错。

    (3)所有window对象的属性拥有全局作用域

    例如window.name、window.location、window.top等等。

    2. 局部作用域(Local Scope)

    局部作用域一般只在固定的代码片段内可访问到,最常见的例如函数内部,所有在一些地方也会看到有人把这种作用域称为函数作用域,例如下列代码中的blogName和函数innerSay都只拥有局部作用域。

    function doSomething(){
    var blogName = "梦想天空";
    function innerSay(){
        alert(blogName);
    }
    innerSay();
    }
    alert(blogName);//脚本错误
    innerSay();//脚本错误
    

    作用域链(Scope Chain)

    明天待续

    相关文章

      网友评论

        本文标题:学习笔记《JS作用域和作用域链》

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