zoukankan      html  css  js  c++  java
  • javascript中函数作用域和声明提前

    javascript不像java等其他强类型语句,没有块级作用域(括号内的代码都有自己的作用域,变量在声明它们的代码段之外不可见)一说,但有自己的独特地方,即函数作用域。

    函数作用域:变量在声明它们的函数体内以及这个函数体的任意内部函数体内是有定义的。

    如下所示代码,在不同位置定义了变量i、j和k,它们都在同一个作用域内,即在函数体内均是有定义的。

    function test(){
        var i=0;        //i在整个函数体内均有定义
        if(true){
            var j=0;    //j在整个函数体内均有定义
            for(var k=0;k<10;k++){    //k在整个函数体内均有定义
                console.log(k);        //输出0~9
            }
            console.log(k);            //输出10
        }
        console.log(j);                //输出0
    }
    test();

    声明提前:变量的声明(不包括赋值)都被提前至函数体顶部。
    注意:声明提前是在javascript引擎的预编译时进行的,是在代码开始运行之前。

    下面是有关代码及注释:

    var i=1;
    function test(){
        console.log(i);                //输出undefined
        var i=2;
        console.log(i);                //输出2
    }
    test();

    上述代码可等价如下所示:

    var i=1;
    function test(){
        var i;
        console.log(i);                //输出undefined
        i=2;
        console.log(i);                //输出2
    }
    test();
  • 相关阅读:
    2017.10.20
    2017.10.14
    2017.10.19
    2017.10.18
    2017.10.17
    软件工程个人作业02
    构建之法读后感03
    构建之法阅读笔记02
    二柱子问题(随机产生四则运算题目)
    课后作业2(构建之法阅读计划)
  • 原文地址:https://www.cnblogs.com/aaron-shu/p/4121915.html
Copyright © 2011-2022 走看看