<!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. (十一)React Ant Design Pro + .Net5 WebApi:后端环境搭建-IdentityServer4(三)持久化

    一.前言 IdentityServer配合EFCore持久化,框架已经为我们准备了两个上下文: ConfigurationDbContext:配置数据(资源.客户端.身份等) PersistedGra ...

  2. 2021.08.09 P5018 对称二叉树(树形结构)

    2021.08.09 P5018 对称二叉树(树形结构) [P5018 NOIP2018 普及组] 对称二叉树 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题意: 求一棵子树,关 ...

  3. Linux中信号量的实现

    如果一个任务获取信号量失败,该任务就必须等待,直到其他任务释放信号量.本文的重点是,在Linux中,当有任务释放信号量之后,如何唤醒正在等待该信号量的任务. 信号量定义如下: struct semap ...

  4. Luffy /3/ 前台主页搭建&轮播图接口

    目录 前台主页搭建 components/Homeviwe.vue components/Banner.vue components/Header.vue components/Footer.vue ...

  5. 生命周期和作用域 & mybatis执行流程

    流程 sqlSessionFactory 实例化后  --> transactional事务管理-->创建executor执行器-->创建SqlSession-->实现增删改查 ...

  6. [AcWing 795] 前缀和

    点击查看代码 #include<iostream> using namespace std; const int N = 1e5 + 10; int a[N], s[N]; int mai ...

  7. 8 种常见 SQL 错误用法

    点击上方"开源Linux",选择"设为星标"回复"学习"获取独家整理的学习资料! 1.LIMIT 语句 分页查询是最常用的场景之一,但也通常 ...

  8. Android8.0 后台服务保活的一种思路

    原文地址:Android8.0 后台服务保活的一种思路 | Stars-One的杂货小窝 项目中有个MQ服务,需要一直连着,接收到消息会发送语音,且手机要在锁屏也要实现此功能 目前是使用广播机制实现, ...

  9. PHP代码审计之SQL注入

    代码审计之SQL注入 SQL注入攻击(SQLInjection),是攻击者在表单中提交精心构造的sql语句,改变原来的sql语句,如果web程序没有对提交的数据经过检查,那么就会造成sql注入攻击. ...

  10. Rainbond结合NeuVector实践容器安全管理

    前言 Rainbond 是一个云原生应用管理平台,使用简单,不需要懂容器.Kubernetes和底层复杂技术,支持管理多个Kubernetes集群,和管理企业应用全生命周期.但是随着云原生时代的一点点 ...