当前位置: 首页 > article >正文

javascript-es6 (二)

函数进阶

函数提升

函数提升与变量提升比较类似,是指函数在声明之前即可被调用
好处:能够使函数的声明调用更灵活
函数提升出现在 相同作用域 当中
//可调用函数
fn()

//后声明函数
function fn() {
    console.log('可先调用再声明')
}
注意:函数表达式不存在提升的现象
//调用表达式,不存在提升现象
bar()  //错误

var bar = function() {
    console.log('函数表达式不存在提升哦')
}

函数参数

动态参数
arguments 是函数内部内置的伪数组变量,它包含了调用函数时传入的所有实参
function sum() {
      // console.log(arguments) arguments是伪数组
      let s = 0
      for (let i = 0; i < arguments.length; i++) {
        s += arguments[i]
      }
      console.log(s)
    }
    sum(3, 3)  //6
总结:
1. arguments 是一个伪数组, 只存在于函数中
2. arguments 的作用是动态获取函数的实参
3. 可以通过for循环依次得到传递过来的实参
剩余参数   (提倡使用)
剩余参数允许我们将一个不定数量的参数表示为一个数组
function getSum(...other) {
    console.log(other)  //使用的时候不需要写...
    //other 得到 [1,2,3]
}
getSum(1,2,3)
  • ... 是语法符号,置于最末函数形参之前,用于获取多余的实参
  •  借助 ... 获取的剩余实参,是个真数组,只存在于函数中
function getSum(a,b,...other) {
 
    console.log(a,b,other)  //里面的 other 也可以换成其他字母哦
}
getSum(1,2,3,4) //1 2 [3,4]
展开运算符(…)
数组中使用, 将一个数组进行展开,不会修改原数组
典型运用场景:
求数组最大值(最小值)
const arr = [1,2,3,4]
console.log(...arr)  //1 2 3 4

//...arr === 1,2,3,4
console.log(Math.max(...arr))  //4
console.log(Math.min(..arr))   //1
合并数组
const arr1 = [1,2]
const arr2 = [3,4]
const arr3 = [...arr1,...arr2] 
console.log(arr3)  //[1,2,3,4]

箭头函数(重要)

引入箭头函数的目的是更简短的函数写法并且不绑定this,箭头函数的语法比函数表达式更简洁
更适用于那些本来 需要匿名函数的地方

基本写法

//普通写法
const fn = function () {
   console.log('我是普通函数哦') 
}
fn()
//箭头函数
const fn = () => {
    console.log('俺是箭头函数')
}
fn()
只有一个参数可以省略小括号
//普通函数
const fn = function (x) {
    return x + x
}
consle.log(fn(1))  //2

//箭头函数
const fn = x => {
    return x + x
}
console.log(fn(1))  //2
如果函数体只有一行代码,可以写到一行上,并且无需写 return 直接返回值

http://www.kler.cn/a/521433.html

相关文章:

  • 《深入浅出HTTPS​​​​​​​​​​​​​​​​​》读书笔记(31):HTTPS和TLS/SSL
  • 【C++】类和对象(5)
  • 阿里云 - RocketMQ入门
  • 进阶数据结构——高精度运算
  • Linux工具使用
  • 金融级分布式数据库如何优化?PawSQL发布OceanBase专项调优指南
  • 深度学习,python编程运行环境问题等记录(更新)
  • DistilBERT 是 BERT 的精简版本,具有更小、更快、更经济、更轻便的特点。
  • SD-WAN站点和客户端的区别
  • VS Code i18n国际化组件代码code显示中文配置 i18n ally
  • toRow和markRow的用法以及使用场景
  • K8s运维管理平台 - KubeSphere 3.x 和4.x 使用分析:功能较强,UI美观
  • 【Java-数据结构】Java 链表面试题上 “最后一公里”:解决复杂链表问题的致胜法宝
  • 深圳大学-智能网络与计算-实验三:网络容量优化分析实验
  • 【2024年华为OD机试】 (B卷,100分)- 阿里巴巴找黄金宝箱(III)(JavaScriptJava PythonC/C++)
  • 超硬核,基于mmap和零拷贝实现高效的内存共享
  • 计算机图形学知识点整理(期末复习/知识点学习/笔试/面试)
  • DDD-事件风暴
  • 机器学习 - 初学者需要弄懂的一些线性代数的概念
  • Alfresco Content Services dockerCompose自动化部署详尽操作
  • 使用scikit-learn中的线性回归包对自定义数据集进行拟合
  • PPT对齐排版的实用方法
  • 【漫话机器学习系列】063.梯度下降(Gradient Descent)
  • 【STM32】-TTP223B触摸开关
  • 荔枝派LicheePi Zero V3S芯片图形系统开发详解[持续更新]
  • Nxopen 直齿轮参数化设计