美文网首页
javascript中函数命名的三种方式

javascript中函数命名的三种方式

作者: 那麽快樂 | 来源:发表于2019-06-02 23:17 被阅读0次

    函数

    //函数声明式:

    function 函数名() {

        //函数体 ,功能块

    }

    //注意:

    // function: 定义函数的关键字( 必须小写)

    // 函数名: 自定义的一个名字( 调用时必须与函数名称相同的大小写调用函数)

    // 函数体: 要封装的某段代码, 它可以完成某个特定的功能

    // 特点: 函数声明提升, 自动提升到顶端

    // 函数声明可以随时随地调用。

    //函数表达式:

    var min = function() {

        //函数体

    }

    // 特点: 定义之后调用, 定义之前调用, 报错。

    //构造函数的方式声明:

    var fn = new Function()

    console.log(fn)

    function Fun() {

    }

    var fn = new Fun()

        // 函数作用域:

        // 全局变量: 不在任何函数内定义的变量就是全局变量。 实际上, JavaScript默认有一个全局对象window, 全局作用域的变量实际上被绑定到window的一个属性: 因此, 直接访问全局变量global和访问window.global是完全一样的。

        // 局部变量:(函数内var 声明的变量) 只能被函数自身读取( 该变量的作用域是局部的)。

    // 变量的规则:( 变量的作用域)

    // 1) 如果一个变量在函数体内部申明, 则该变量的作用域为整个函数体, 在函数体外不可引用该变量:

    eg: function fn() {

        var x = 1;

    }

    x = x + 2; // 报错 找不到函数体内的变量

    // 2) 如果两个不同的函数各自申明了同一个变量, 那么该变量只在各自的函数体内起作用。 各自为政互补干扰。

    eg: function fn1() {

        var x = 1;

        console.log(x)

    }

    fn1() //1

    function fn2() {

        var x = 2;

        console.log(x)

    }

    fn2() //2

        // 3) 函数外部的变量就算是和函数内部的变量名称相同, 也是两个变量, 没有任何关系, 彼此不发生影响

    var a = 20

    function fn() {

        var a = 5;

        console.log(a) //5

    }

    console.log(a) //20

    fn()

        // 4) 函数内部的变量, 没有用var时, 会逐层向上查找

        //     (如果把值赋给尚未声明的变量, 是隐式声明, 不会变量提升, 直接为全局变量)

    eg: var a = 2

    function fn() {

        console.log(a) //undefiend

        var a = 1

        console.log(a) //1  //就近原则 在函数体寻找

    }

    console.log(a) //2   读取函数外a

    fn();

    console.log(a) //2 调用后函数声明 权重比 var高 所以被a=2覆盖      

        // 作用域链:变量查找的范围,从函数自身的范围开始找,自身没有

        // 找父级,一直找到document为止,找不到结果是undefined.

        // 函数同名的话,后写的函数覆盖先写的函数,这叫函数 没有重载。

        // 注意:js没有重载

    function add() {

        console.log(1)

    }

    function add() {

        console.log(2)

    }

    add() //2

        //同名函数会被覆盖

        // 遇到连等赋值,等号前有优先提取特点,等号后的变量则看做全局变量 eg: var a=b=5 a有生名提升 b为全局变量

    相关文章

      网友评论

          本文标题:javascript中函数命名的三种方式

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