<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>函数</title>
</head>
<body> </body>
<script>
function fun1(x,y) {
return x+y
}
let a = fun1(1,2);
console.log(a);//3
// 函数参数默认值
function fun2(x=1,y=0) {
return x+y
}
let b = fun2();
console.log(b);//1
// 函数多参数
function fun3(...n) {
console.log(n.length);
}
fun3(1,2,3);//3
// 箭头函数
let fun4 = (v,y) =>{
console.log(v,y);
}
fun4('hello','world');// hello
let fun5=(x) => x+1 // 或这样写。let fun5 = x =>x+1
console.log(fun5(1));//2
// 函数尾调用
// 尾调用,共用一个内存空间。一定要注意一点,尾调用的函数一定是最后一步(区分最后一行),切不参与运算。
let fun6 = (x)=>x+5;
let fun7 =()=>{
return fun6(2)
}
console.log(fun7());//7
// 不属于尾调用
let fun8 = (x)=>x+2;
let fun9 = ()=>{
let a = fun8(2);
return a
}
console.log(fun9());// 4. 虽然也可以输出4,但是不属于尾调用。
// 不属于尾调用
let fun10 = () =>{
return fun8(9)+1
}
console.log(fun10());//12 . 参与运算了。这是不可以的,参与尾调用的必须是独立的。不能有什么牵连。
// 尾调用优化
// 递归
let factorial = (n)=>{
if(n <=1 ){
return 1
} else{
return n*factorial(n-1)
}
}
console.log(factorial(3)); //1*2*3

更多内容请见原文,原文转载自:https://blog.csdn.net/weixin_44519496/article/details/119862109

重学ES系列之函数优化的更多相关文章

  1. 重学ES系列之拓展运算符

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  2. 重学ES系列之字符串方面的处理

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. 重学ES系列之模版字符串

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. 重学ES系列之新增的几个循环方法

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. 重学ES系列之过滤数组

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. 重学ES系列之Set实现数组去重、交集、并集、差集

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. 重学ES系列之新型数据结构Map应用

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. 重学ES系列之变量的作用范围

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. 重学c#系列——字典(十一)

    前言 重学c#系列继续更新,简单看一下字典的源码. 看源码主要是解释一下江湖中的两个传言: 字典foreach 顺序是字典添加的顺序 字典删除元素后,字典顺序将会改变 正文 那么就从实例化开始看起,这 ...

随机推荐

  1. Mysql各版本号的含义

    1)MySQL Community Server 社区版本,开源免费,但不提供官方技术支持2)MySQL Enterprise Edition企业版本,需付费,可以试用30天3)MySQL Clust ...

  2. linux三剑客试题汇总

    1.找出/proc/meminfo文件中以s开头的行,至少用三种方式忽略大小写 [root@localhost ~]# grep -E '^[sS]' /proc/meminfo [root@loca ...

  3. hutool工具类常用API整理

    0.官网学习地址 https://www.hutool.cn/ 1.依赖 <dependency> <groupId>cn.hutool</groupId> < ...

  4. gin框架使用【5.表单参数】

    curl http://127.0.0.1:8080/users -X POST -d 'name=juanmaofeifei&age=10' package main import ( &q ...

  5. android软件简约记账app开发day04-记账页面条目的代码书写

    android软件简约记账app开发day04-记账页面条目的代码书写 在前三天我们完成了基本的界面展示,从今天开始,我们进入到后台逻辑代码的编写中,今天开发记账条目的代码 我们在主页面点击记一笔图标 ...

  6. 在django中使用orm来操作MySQL数据库的建表,增删改

    多张表之间的三种关系:一对一,一对多,多对多 创建表 一对一 xx = models.OneToOneField(to='表明',to_field='字段名',on_delete=models.CAS ...

  7. 3.4 常用Linux命令

    1.cat命令 cat命令用于查看纯文本文件(内容较少的) 2.more命令 more命令用于查看纯文本文件(内容较多的),语法格式为"more [参数] 文件名称". 3.hea ...

  8. 修复Arch Linux和Manjaro Linux无法显示emoji的问题

    安装好Arch Linux或Manjaro Linux系统后默认没办法正常显示emoji,通常会变成方框或者带有unicode码的方块: 这是因为缺失字体以及相关的字体配置导致的. 当然也有一小部分应 ...

  9. java高级用法之:JNA中的Function

    目录 简介 function的定义 Function的实际应用 总结 简介 在JNA中,为了和native的function进行映射,我们可以有两种mapping方式,第一种是interface ma ...

  10. .net core JWT验证,HttpContext.User为空的问题

    这几天在学习张老师.net core教程JWT部分,链接 https://mp.weixin.qq.com/s/7135y3MkUlPIp-flfwscig 教程使用的.net core 2.2, 在 ...