[JavaScript]一些自己的疑惑和错误

118 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第6天,点击查看活动详情

数组的filter方法的return后写的是判断条件

  • filter()方法就是用于在对数据进行遍历时,根据条件进行筛选
  • 过滤器方法

语法: 数组.filter(function(item,index){ return 条件 })

    说明:
    每次遍历到的数组元素
    item
    每次遍历到的数组元素的下标
    index
    条件必须使用 return 条件
    添加条件元素,并终被以数组的形式返回(你要定义变量接收)
        let arr = [14, 20, 9, 7, 11];
        let ret = arr.filter(function (item) {
            // console.log(item);
            return item <15
        })
        console.log(ret);

image.png

  • 注意:
  • 在数组的filter方法中的return后接的是判断条件,如:item<15;
  • 这是filter方法的特殊规定(我感觉大概是因为JavaScript不太严谨的原因)
  • 正常的函数中return 后接的是返回值,如数组的map函数return后是返回的新数组,自定义函数如果没有写return则返回值为undefined,也有一些是定义好的返回值,如数组的删除方法splice()返回值为被删除的元素

inner 和 inner() 的区别{函数名和函数名()的区别}

当函数内部没有自定义返回值(return)时

  • 执行下面函数
          function inner() {
            let a = 10
            console.log(a);
            // return  (a+5);
        }
        inner
        inner()
        console.log(inner);
        console.log(inner());
  • 返回结果:
  • inner没有任何返回,没有报错也没有undefined,
    • 通过断点调试我们发现,浏览器直接跳过了这条语句,没有任何执行
  • inner()是调用函数返回了控制台输出10
  • console.log(inner);控制台输出的是整个函数
  • console.log(inner());控制台输出的是10和undefined
    • 断点调试发现这条语句先调用函数,通过函数内部的 console.log(a);输出第一条10
    • 然后执行console.log(inner());中的log输出inner()的返回值,但是由于函数中没有return ,所以输出默认值undefined

image.png

当函数内部有自定义返回值(return)时

  • 我们把上面代码中的return语句 解开
  • 执行代码
          function inner() {
            let a = 10
            console.log(a);
            return console.log(a+5);
        }
        inner
        inner()   
        console.log(inner);
        console.log(inner());
  • 返回结果:
  • inner没有任何返回,没有报错也没有undefined,
    • 通过断点调试我们发现,浏览器直接跳过了这条语句,没有任何执行
  • inner()是调用函数返回了控制台输出10
  • console.log(inner);控制台输出的是整个函数
  • console.log(inner());控制台输出的是10和15
    • 断点调试发现这条语句先调用函数,通过函数内部的 console.log(a);输出第一条10
    • 然后执行console.log(inner());中的log输出inner()的返回值,
      • 但是由于函数中return console.log(a+5); ,所以输出默认值15

image.png

总结:

  • inner只是表示函数的名字,直接作为单独语句不实现任何效果
  • 但是吧inner作为一个变量名使用,它代表的是整个函数,console.log(inner);输出的是整个函数
  • inner()单独使用是调用inner函数,会执行函数中的语句
  • inner()如果放在语句中使用,首先也会执行函数中的语句,然后把返回函数的返回值(return),
    • 例如 console.log(inner());先执行函数,输出10,然后控制台输出函数的返回值15.