2022/3/2阅读红宝书函数第十章

箭头函数:

1.

let sum = (num1, num2) => {

return num1 + num2;

};

2.

map()方法将调用的数组的每个元素传递给指定的函数,并返回一个数组,它包含该函数的返回值。

       传递给map()的函数的调用方式和传递给forEach()的函数的调用方式一样。但传递给map()的函数应该有返回值。注意:map()返回的是新数组:它不修改调用的数组。如果是稀疏数组,返回的也是相同方式的稀疏数组:它具有相同的长度,相同的缺失元素。

3.

函数(function)是指一段可以直接被其名称调用的代码块,它可以传入一些参数进行处理并返回一些数据,所有传入函数的数据都是被明确定义。

方法指的是一段被它关联的对象通过它的名字调用的代码块,函数和方法有下面亮点区别。

1.一个方法(method)会隐私的传递调用该方法的对象。

例如:在Java非静态方法中可以使用this关键字

2.一个方法可以可以处理包含在一个类里面的数据(记住一个对象是一个类的实例)

例如:在Java的方法中,可以调用静态的变量,这些是属于类的数据而非某个对象。

通俗一点来说:方法J就是面向对象版的函数

4.

let ints = [1, 2, 3];



      console.log(

        ints.map((i) => {

          return i + 1;

        })

      );

结果:

  1. (3) [2, 3, 4]
    1. 0: 2
    2. 1: 3
    3. 2: 4
    4. length: 3

箭头函数只有一个参数,可以省去括号

let getRandom = () => {

        return Math.random();

      };

      console.log(getRandom());

结果:0.8750618124865102


5.函数名:函数名是指向函数的指针,可以有多个函数名

6:函数参数:JS不关心函数参数的个数

function doAdd() {
        if (arguments.length === 1) {
          console.log(arguments[0] + 10);
        } else if (arguments.length === 2) {
          console.log(arguments[0] + arguments[1]);
        }
      }
      doAdd();
      doAdd(1);
      doAdd(2);

结果:11 12

注意:arguments对象是一个类数组对象,可以用中括号语法访问其中的元素,但是不能用于箭头函数

arguments可以与命名参数一起使用

注意:JS中的所有参数都是按值传递,不可能按照引用传递

JS中不能重载

7:默认参数:

在5.1版本之前,实现默认参数的一种方法是检测某个参数是否等于undefined

而6以后,支持显式定义默认参数

条件(三元)运算符

条件运算符是JavaScript中唯一需要三个操作数的运算符。运算的结果根据给定条件在两个值中取其一。语法为:

条件 ? 值1 : 值2

如果条件为真,则结果取值1。否则为值2。你能够在任何允许使用标准运算符的地方使用条件运算符。

例如,

var status = (age >= 18) ? "adult" : "minor";

当 age 大于等于18的时候,将“adult”赋值给 status;否则将“minor”赋值给 status

8:for语句

for(初始化;表达式;后循环表达式)

        陈述

9.函数声明与函数表达式

console.log(sum(10, 10));
      function sum(num1, num2) {
        return num1 + num2;
      }

结果:20

因为JS引擎会区别对待函数声明与函数表达式

上诉代码可以正常运行是因为函数声明会在代码执行之前被读取并添加到上下文--函数声明提升

console.log(sum(10, 10));
      let sum = function (num1, num2) {
        return num1 + num2;
      };

结果:Uncaught ReferenceError: Cannot access 'sum' before initialization

因为函数定义在一个变量初始化的语句中,而不是函数声明中

10:函数作为值

 函数名就是变量,所以函数可以作为参数传给另一个函数,而且还能在一个函数中返回另一个函数

// 第一个是参数是函数,第二个要传给这个函数的值
      function callSomeFunction(someFunction, someArgument) {
        return someFunction(someArgument);
      }
      function add10(num) {
        return num + 10;
      }
      let result1 = callSomeFunction(add10, 10);
      console.log(result1);

结果:20

11:函数内部

在JS中,函数内部存在两个特殊的对象:arguments和this

arguments:有一个callee属性,是一个指向arguments对象所在函数的指针。

function factorial(num) {
        if (num <= 1) {
          return 1;
        } else {
          return num * arguments.callee(num - 1);
        }
      }

      console.log(factorial(3));

结果:6

this:在标准函数与箭头函数中有不同的行为。

在标准函数中:this引用的是把函数当成方法调用的上下文对象,这时候通常称其为this值

window.color = "red";
      let o = {
        color: "blue",
      };

      function sayColor() {
        console.log(this.color);
      }
      sayColor();
      o.sayColor = sayColor;
      o.sayColor();

结果:red  blue 在开始的sayColor()引用this对象,这个this到底引用哪个对象必须到函数被调用才能确定,因为this 的值在执行过程中会发生改变

在箭头函数中:this引用的是定义箭头函数的上下文

注意:

 函数(function)是可以执行的javascript代码块,由javascript程序定义或javascript实现预定义。函数可以带有实际参数或者形式参数,用于指定这个函数执行计算要使用的一个或多个值,而且还可以返回值,以表示计算的结果。

  方法(method)是通过对象调用的javascript函数。也就是说,方法也是函数,只是比较特殊的函数。假设有一个函数是fn,一个对象是obj,那么就可以定义一个method:

window.color = "red";
      let o = {
        color: "blue",
      };

      let sayColor = () => {
        console.log(this.color);
      };
      sayColor();
      o.sayColor = sayColor;
      o.sayColor();

结果:red red 此时的箭头函数是在window上下文中定义的

12:函数的属性与方法

注意:属性与方法区别:比如一条狗,他的长相,颜色,大小,体重等就是属性。狗会叫,咬,跳等就是方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值