• 《深入理解JavaScript》—— 函数


    1.JavaScript中函数的3种形式

    一旦你定义了一个函数,那么他就拥有了多种调用形式:

    ●  非方法调用(“普通函数”)

    你可以直接调用函数,那么它会像一个普通函数一样运行。

    add(‘hello’);

    通常,函数的命名以小写字母开头。

    ●  构造器

    你可以使用new操作符来调用一个函数。哲挥手函数将会是一个构造器,一个创建对象的工厂:

    var a = new Date();

    通常,函数作为构造器,其命名都是以大写字母开头。

    ●  方法

    你可以讲一个函数储存为一个对象的属性,这时候他会变成一个方法,而你可以通过对象啦调用它。

    obj.method();

    按照惯例,方法的名称也是以小写字母开头。

    (2) 术语:“形参”(parameter)和“实参”(arguments)

    ●  形参被用在定义函数时。其中param1和param2都是形参。

     function foo( param1 , param2 ) {
        return param1 + param2;
    }
    foo();

    其中实参是在函数调用时被使用。

    foo( 2 , 3 );

    (3) 定义函数

    ●  通过函数表达式

    ●  通过函数声明

    ●  通过Function()构造器

    其中,所有函数都是Function构造器的实例。因此,函数从Function.prototype上继承了方法。

    1. 函数表达式

    函数表达式会产生一个值——函数对象。例如:

    var add = function ( x , y ) {
        return x + y;
    };
    console.log ( add(1,2) );  // 3

    具名函数表达式:你可以给函数表达式起一个名字,具名函数表达式使得函数表达式可以引用它自身,这对递归很有用。

    注:具名函数表达式的名字只能在函数表达式内部被访问到。

    var repeat = function me( n , str ) {
        return n > 0 ? str + me(n-1,str) : '';
    };
    console.log ( repeat( 3 , 'hello' ) );  // hellohellohello
    console.log ( me ); // ReferenceError : me is not defined

    2. 函数声明

    函数声明看起来像是一个函数表达式,但其实它是一个语句。

    3. Function构造器

    var add = new Function ( 'x' , 'y' , 'return x + y' );

    我: 只做了解就好,这种方法完全不建议使用。

    (4) 函数提升

    函数提升表示“将函数的声明放到作用域的开始”。函数声明是做了完全提升的,而变量声明则是部分提升。

    (5) 函数的名称

    大多数JavaScript引擎对于函数对象都会提供一个非标准的name属性。

    函数的名称对于debug来说是非常有用的,所以有一些开发者会给函数表达式加上名字。

    (6) 控制函数调用:call()、apply()、bind()

    所有的函数(记住这里说的函数是指对象以及对象的方法)都具有call()、apply()、bind()方法。它们可以在执行方法时用一个值指向this,并改变面向对象的作用域。

    1. func.apply(thisValue,argValue)

    2. func.bind(thisValue,arg1,arg2...)

    这个方法会执行部分的函数功能,它会创建一个新的函数,这个函数会调用func,并会将thisValue指定为this,同时应用以下参数,紧随其后的是新函数的实际参数。

  • 相关阅读:
    CF-1111 (2019/2/7 补)
    CF-1096C Polygon for the Angle
    CF-1100 E Andrew and Taxi
    CF-1099 D. Sum in the tree
    sscanf的使用
    CF-1082(渣渣只做了前三个)
    UVA-10817- Headmaster's Headache(状压DP)
    UVA-1220-Party at Hali-Bula && UVA-1218-Perfect Service(树形DP)
    CF-1072-C. Cram Time(贪心,数学)
    CF-1027-B. Curiosity Has No Limits
  • 原文地址:https://www.cnblogs.com/luohaoran/p/5964697.html
Copyright © 2020-2023  润新知