重学ES系列之函数优化
<!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系列之函数优化的更多相关文章
- 重学ES系列之拓展运算符
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 重学ES系列之字符串方面的处理
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 重学ES系列之模版字符串
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 重学ES系列之新增的几个循环方法
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 重学ES系列之过滤数组
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 重学ES系列之Set实现数组去重、交集、并集、差集
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 重学ES系列之新型数据结构Map应用
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 重学ES系列之变量的作用范围
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 重学c#系列——字典(十一)
前言 重学c#系列继续更新,简单看一下字典的源码. 看源码主要是解释一下江湖中的两个传言: 字典foreach 顺序是字典添加的顺序 字典删除元素后,字典顺序将会改变 正文 那么就从实例化开始看起,这 ...
随机推荐
- AgileConfig 1.6.0 发布 - 支持服务注册与发现
大家好,好久没有输出博文了,一是因为比较忙,另外一个原因是最近主要的精力是在给 AgileConfig 添加一个新的功能:服务注册与发现. 先说说为什么会添加这个功能.我自己的项目是用 Consul ...
- Adobe Xd 练习
作业要求: 我的work: 下载练习: 2020_3/work.xd 参考教程: https://www.youtube.com/watch?v=dbpGJU4WL1U
- Nuxt.js(二、解决首屏速度与SEO)
Nuxt.js(二.解决首屏速度与SEO) 1.普通的Vue SPA初始化加载速度很慢 在传统的web应用中,当用户请求一个页面时,服务器直接返回一个html文件,浏览器直接渲染出来.但是,在vue应 ...
- 【技术积累】Eclipse使用系列【第一版】
Eclipse安装(Neon版本) Eclipse 最新版本 Eclipse Neon,这个首次鼓励用户使用 Eclipse Installer 来做安装,这是一种由Eclipse Oomph提供的新 ...
- 分布式应用运行时 Dapr 1.7 发布
Dapr 是一个开源.可移植的.事件驱动的运行时,可以帮助开发人员构建在云和边缘上运行的弹性的.微服务的.无状态和有状态应用程序,并且关注于业务逻辑而不用考虑分布式相关的问题. 分布式相关的问题交给D ...
- SpringCloud入门简述
1.微服务简述 微服务,是一个小型的服务,也是一种设计理念,将一个大型繁杂的系统拆分为多个小型的服务,进行独立部署,这些服务在独立进程中运行,通过特定的协议进行通信 优点: 轻量化:一个服务不 ...
- 一种O(n)时间复杂度的计数排序算法和Top N热词算法
排序算法是研究非常广泛且超级经典的算法,主流排序算法的时间复杂度基本都在O(nlogn). 今天就介绍一种以hash表为基础的,时间复杂度能够达到O(n)的排序算法--计数排序: 同时基于它的思想,完 ...
- 【面试普通人VS高手系列】请说一下你对分布式锁的理解,以及分布式锁的实现
一个工作了7年的Java程序员,私信我关于分布式锁的问题. 一上来就两个灵魂拷问: Redis锁超时怎么办? Redis主从切换导致锁失效怎么办? 我说,别着急,这些都是小问题. 那么,关于" ...
- NLP教程(3) | 神经网络与反向传播
作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/36 本文地址:http://www.showmeai.tech/article-det ...
- 一篇文章教你搞懂日志采集利器 Filebeat
关注「开源Linux」,选择"设为星标" 回复「学习」,有我为您特别筛选的学习资料~ 本文使用的Filebeat是7.7.0的版本,文章将从如下几个方面说明: Filebeat是什 ...