• JavaScript – Function 函数


    参考

    阮一峰 – 函数的扩展

    基本用法

    function fn1(param1, param2 = 'default value') {
      return 'return value';
    }
    
    fn1('1');

     

    JS 函数特色

    no optional parameters

    JS 的函数没有 optional parameters 的概念, 调用的时候如果没有传入参数, 那么参数值是 undefined

    传入 undefined 相等于没有传入值, 如果有定义 default value 就会拿 default value 来用

    always have return value

    即使函数没有写任何 return, 最终都会 return undefined.

    arguments 对象

    因为参数完全没有被限制, 所以 JS 函数内有一个 arguments 对象, 可以动态的去检查最终传入的参数有多少,有哪些.

    function fn1(param1, param2 = 'default value') {
      console.log(arguments.length);
      console.log(arguments[0]);
    }

    在 ES6 过后, 大部分人会用 rest parameters 取代 arguments 对象.

    函数是一等公民

    函数可以 assign to variables, 也可以当参数传来传去.

    function method1(method2) {}
    
    const method2 = function() {}
    method1(method2);

    函数里的 this

    函数的 this depend on 调用它的对象.

    函数在全局调用, 所以 this 指向 globalThis

    function method1(thisRef) {
      console.log(this === thisRef);
    }
    method1(globalThis); // true

    函数在某个对象中调用

    const object1 = {
      method2: method1,
    };
    object1.method2(object1);

    this 不在指向 globalThis, 而是指向调用它的 object1

    通过 call 或 apply 控制 this 指向

    function method1() {
      console.log(this.value); // value1
    }
    
    method1.call({ value: 'value1' });

    call 可以直接给一个对象当作函数的 this.

  • 相关阅读:
    合并区间
    判断字符串是否是IP
    Python -- 异常处理
    python -- 双下方法
    python -- 判断函数和方法
    python -- 面向对象:反射
    Python -- 面向对象:类的成员
    Python -- 面向对象:类的约束
    Python -- 面向对象的三大特性及深入了解super()
    Python -- mro算法
  • 原文地址:https://www.cnblogs.com/keatkeat/p/16240588.html
Copyright © 2020-2023  润新知