Javascript函数作用域

﹥>﹥吖頭↗ 提交于 2020-03-01 23:20:27

Javascript函数作用域

函数的定义:
函数是计算机编程中非常重要的一个语法结构。那么什么是函数呢?函数指一组可以随时随地运行的代码集合,当他被调用时可重复的去执行这些代码集合。
数学中的函数:
数学中的函数指给定一个数集A,对A施加对应法则f,记作f(A),得到另一数集B,也就是B=f(A).那么这个关系式就叫函数关系式,简称函数。
定义函数: JS中创建函数有三种方式:1.函数声明、2.函数表达式、3.函数对象
定义好一个函数后,函数里的内容是不会执行的。当函数被调用的时候,才会执行函数内的程序。
1. 函数声明

> function foo(){
>         console.log(123);
>         console.log(456);
>         console.log(789);
>     }
> 
>     foo();   // 调用函数
>     foo();
>     foo();

2. 函数表达式

var foo = function(){
        console.log(123);
        console.log(456);
        console.log(789);
    };
    foo();

3. 函数对象

var foo = new Function();
    //foo();

函数声明 与 函数表达式的区别?
1.函数声明可以预解析
2.函数表达式可直接调用执行

/* foo();  //函数声明预解析(在当前script块内)

    function foo(){
        console.log(123);
        console.log(456);
        console.log(789);
    } */

    /* foo();     //不具备预解析功能
    var foo = function(){
        console.log(123);
        console.log(456);
        console.log(789);
    }; */

变量预解析:

console.log(a);
    var a = 10;  // 变量预解析 var a = 10;   var a;  a=10;

    var a;
    console.log(a);   //undefined
    a = 10; 

    console.log( a );
    function a(){
     }
    var a;   // 变量预解析要高于函数的预解析

函数的作用域:

作用域:函数作用域与变量作用域。
函数作用域的特点:可以调用到外面的函数 ; 但是调用不到里面的函数。
变量也有作用域:可以调用到外面的变量,但是调用不到里面的变量。
里面能找到外面,但是外面找不到里面。

 function foo(){
        console.log('foo');
        baz();
    }

    function baz(){
        console.log('baz');
    }
    
foo();  //打印结果foo baz
function foo(){
        console.log('foo');
        function baz(){
            console.log('baz');
        }
    }
    
    foo();
    baz(); //打印结果foo       baz函数未定义
 var a = 10;
    function foo(){
        var b = 20;
        console.log(a);
    }
    foo();
    console.log( b ); //打印结果10   b未定义
 function foo(){
        var b = 20;
    }

    function bar(){
        console.log(b);
    }

    foo();
    bar(); //b未定义
var b;
    function foo(){
        b = 20;
    }

    function bar(){
        console.log(b);
    }

    foo();
    bar(); //打印结果20

函数的作用域链:

作用域链 : 变量的查找顺序,就近原则,一层层向外查找。

var a = 10;
    function foo(){
        console.log( a );
        var a = 20;
    }
    foo(); //undefind
 var a = 10;
    function foo(){
        console.log( a );
        a = 20;
    }
    foo(); //10
 var a = 10;
    function foo(a){
        a += 5;
    }
    foo(a);
    console.log(a); //10
 var a = 10;
    function foo(){
        var a = 20;
        bar();
    }
    function bar(){
        console.log(a);
    } 
    foo(); //10
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!