美文网首页
JS作用域

JS作用域

作者: W凯 | 来源:发表于2016-11-21 08:39 被阅读0次

    JS模块化

    JS中变量声明问题

    JS为弱类型,编译型语言
    声明提前
    在JS中,声明语句会被提前到文件首

    //运行结果为2
    a=2;
    console.log(a);
    //var a=3;被分成两部分,var a; a=3;其中var a;会被提到文件首
    var a=3;
    

    //函数声明
    function f(){}
    
    //var f1为声明,f1=function(){}为赋值
    //function f(){}不是声明函数,是函数表达式类型
    var f1=function(){};
    

    //变量声明会提前,但是执行时会报错,TypeError:f is not a function ...
    f();
    var f=function(){
        alert("ok");
    }
    

    静态类型为强类型,动态类型为引用类型

    作用域

    顶级作用域—全局变量
    JS中属性名可以被覆盖。

    //window.a为全局变量
    var a=3;
    console.log(window.a);
    

    在一个作用域以内,使用变量时,如果本作用域以内没有时,向上查找,直到到顶层变量,如果顶层没有时,就在顶层声明一个变量。
    注意在任何情况下使用变量时,使用var声明。

    //自执行函数
    (function(){
    var a=3;
    function f(){
        //绑定事件可写
    }   
    })();
    //初始化全局变量,绑定事件
    

    闭包

    闭包特性:定义时作用域。

    var a=5;
    (function(){
    var a=4;
    function f(){
        console.log(a);
    }
    window.createf=function(){
        return f;
    };
    })();
    
    var f= createf();
    f();

    相关文章

      网友评论

          本文标题:JS作用域

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