JavaScript学习笔记(八)--- 函数表达式
1.递归
实现一:
function factorial(num){if(num<=1){return 1;}else{return num*factorial(num-1);} } alert(factorial(4)); //24
但给factorial重赋值时,再调用就会出错。
var anotherFactorial = factorial; factorial = null; alert(anotherFactorial(4)); //TypeError: factorial is not a function
实现二:
使用arguments.callee解决上面问题。
function factorial(num){if(num<=1){return 1;}else{return num*arguments.callee(num-1);} } alert(factorial(4)); //24
修改factorial,再调用
var anotherFactorial = factorial; factorial = null; alert(anotherFactorial(4)); //24
实现三:
在严格模式下,不能通过脚本访问arguments.callee。解决办法,使用命名函数表达式。
var factorial = (function f(num){if(num<=1){return 1;}else{return num*f(num-1);} });alert(factorial(4)); //24
以上代码创建了一个名为f()的命名函数表达式,然后将它赋值给变量factorial。
把函数赋值给另一个变量,函数的名字f仍然有效。这种方式在严格模式和非严格模式下都行得通。
var anotherFactorial = factorial; factorial = null; alert(anotherFactorial(4)); //24
2.闭包
转载于:https://www.cnblogs.com/yanyangbyou/p/3961276.html
JavaScript学习笔记(八)--- 函数表达式相关推荐
- 菜鸟教程-Javascript学习笔记-JS函数之前
教程连接是: https://www.runoob.com/js/js-tutorial.html DOM(一些操作页面元素的方法) BOM(一些操作浏览器的方法) ################# ...
- Javascript学习笔记2——函数
在Javascript中,function才是Javascript的第一型.当我们写下一段函数时,其实不过是建立了一个function类型的实体. 就像我们可以写成这样的形式一样: function ...
- javascript学习笔记(七) 函数
1.函数内部属性 arguments arguments用来保存函数的参数,arguments.callee指向拥有arguments对象的函数 1 //阶乘 2 function factorial ...
- 《JavaScript语言精粹》学习笔记(函数(2))
<JavaScript语言精粹>学习笔记(函数(2)) 函数(Functions) 参数(Arguments) 当参数被调用时,会得到一个"免费"的参数数组argume ...
- JavaScript学习笔记——函数 Part4:向函数传递函数、从函数返回函数(函数是一等公民)
要点 函数是值,这个值就是函数引用 函数是一等公民:函数引用是一等值 可将函数引用赋给变量.含在数据结构(如对象)中.传递给其他函数或从其他函数返回 函数是一等公民 不要再认为函数是特殊的,有别于Ja ...
- JavaScript学习笔记(四)---闭包、递归、柯里化函数、继承、深浅拷贝、设计模式
JavaScript学习笔记(四)---闭包.递归.柯里化函数.继承.深浅拷贝.设计模式 1. 匿名函数的使用场景 2.自运行 3.闭包 3.1前提: 3.2闭包 4.函数对象的三种定义方式 5.th ...
- JavaScript 学习笔记(二)
JavaScript 学习笔记(二) 文章目录 JavaScript 学习笔记(二) 一 JSON 1. JSON 对象 什么是JSON对象 JSON对象与Javascript对象的区别 在JavaS ...
- JavaScript 学习笔记(1)
1. 何为 Jscript JScript 是一种解释型的.基于对象的脚本语言. 局限性: 1) 不能使用该语言来编写独立运行的应用程序 2) 没有对读写文件的内置 ...
- JavaScript学习笔记04【高级——DOM和事件的简单学习、BOM对象】
w3school 在线教程:https://www.w3school.com.cn JavaScript学习笔记01[基础--简介.基础语法.运算符.特殊语法.流程控制语句][day01] JavaS ...
- JavaScript学习笔记(三)--操作运算符
JavaScript中的运算符有很多,主要分为算术运算符,比较运算符,逻辑运算符,三目运算符.一元运算符.位运算符等.这些运算符都有一些属于自己的运算规则,下面就为大家介绍一下JavaScript中的 ...
最新文章
- C++回声服务器_5-多进程版本
- Storefront与NetScaler的集成配置 - part1
- cdialog创建后马上隐藏_都2020了,你还没用上这些Windows的“隐藏神技能”?
- 波形捕捉:(7)“捕捉缓冲区”特效
- 从0开始构建你的api网关--Spring Cloud Gateway网关实战及原理解析
- 系统优化怎么做-数据库优化
- [LeetCode] Palindrome Linked List
- LeetCode 1053. 交换一次的先前排列
- entity framework使用技巧
- Swift 枚举简单使用
- PCL——连接两个点云的字段
- python去除读取文件中多余的空行
- 易控INSPEC软件与欧姆龙PLC以太网通讯
- 熊猫TV技术与直播技术相关
- linux下gbd调试基础
- Spring Security 实战内容:实现自定义退出登录
- 中关村e谷为产业搭台:中关村论坛(空天专场)黑科技亮相现场
- oracle体育成绩字段,在Excel中利用自定义函数处理体育达标成绩
- C++ 三维空间的点(继承)
- HP前中国CEO孙振耀:关于工作与生活
热门文章
- 李宏毅机器学习笔记4:Brief Introduction of Deep Learning、Backpropagation(后向传播算法)...
- 实现图片预览效果及模糊效果
- 实现一个网易云音乐的 BottomSheetDialog
- Mac系统Git生成ssh公钥
- 时序列数据库武斗大会之 TSDB 名录 Part 1
- 中端存储趋势:x86、SSD缓存和虚拟化
- Smarty3 配置
- Shell 定时清理小脚本
- 你应该在开始API开发之前知道的事(下)(翻译)
- ActiveMQ学习总结(10)——ActiveMQ采用Spring注解方式发送和监听