《JavaScript Ninja》之挥舞函数
挥舞函数
匿名函数为什么如此重要
通常使用匿名函数的情况是,创建一个供以后使用的函数。例如,将匿名函数保存在一个变量里,将其作为一个对象的方法,或者是将匿名函数作为一个回调。——>在这些情况下,该函数并不需要名称进行引用。
JavaScript 的强大威力依赖于是否将其作为函数式语言进行使用。函数式变成专注于:少、无副作用,将函数作为程序代码的构件块。
函数调用时的引用形式,包括递归
通过名称进行引用;
作为一个方法进行引用(通过对象的属性名称);
通过内联名称进行引用;
通过
arguments的callee属性进行引用。
内联函数:
可以给内联函数命名,但这些名称只能在自身函数内部才是可见的。和变量名称有点像,它的作用域仅限于声明它们的函数。
函数引用的存储
函数可以拥有属性,并且这些属性可以用来保持任何我们想使用的信息,包括以下几类:
在函数属性中保存其他函数,以便稍后进行引用或调用;
使用函数属性创建缓存(记忆)。
利用函数的属性特性,给函数添加一个附加属性从而实现函数的存储。
函数上下文的利用
函数调用时,通过控制传递函数上下文,我们在当前对象上执行该对象没有的方法。利用这种技术,可以利用像 Array 和 Math 上已有的方法,在自定义数据上进行操作。
处理可变长度的参数列表
基于所传递参数的不同(函数重载),函数可以执行不同的操作。
由于 JavaScript 没有函数重载,参数列表的灵活性是获得其他语言类型重载功能的关键所在。
通过检查 arguments 列表,我们可以根据其传入参数的个数或类型,决定我们要做的事情。
函数的
length属性:声明了多少命名参数;
arguments的length属性:在调用时传入了多少参数。
判断一个对象是否是函数
通过在对象上调用 typeof 操作符,判断其结果是不是 function,可以判断该对象是不是函数的一个实例。但这种方式也有跨浏览器问题。
《JavaScript Ninja》之挥舞函数的更多相关文章
- 《JavaScript Ninja》之函数是根基
函数是根基 理解函数为什么如此重要 JavaScript 是一门 函数式语言 . 函数为什么是第一型对象 在 JavaScript 中,函数可以共处,可以将其视为其他任意类型的 JavaScript ...
- 读Secrets of the JavaScript Ninja(一)函数
理解JavaScript为什么应该作为函数式 在JavaScript中,函数是程序执行过程中的主要模块单元 函数是第一类对象 通过字面量创建 function ninjaFunction(){} 赋值 ...
- 《Secrets of the JavaScript Ninja》:JavaScript 之运行时代码
最近,在阅读 jQuery 之父 John Resig 力作:Secrets of the JavaScript Ninja(JavaScript忍者秘籍).关于第九章提及的 JavaScript 之 ...
- Javascript自执行匿名函数(function() { })()的原理分析
匿名函数指没有指定函数名或指针的函数,自执行匿名函数只是其中一种,下文中称这种函数为:自执行函数 下面是一个最常见的自执行函数: // 传统匿名函数 (function() { alert('hell ...
- 借助JavaScript中的时间函数改变Html中Table边框的颜色
借助JavaScript中的时间函数改变Html中Table边框的颜色 <html> <head> <meta http-equiv="Content-Type ...
- 02.JavaScript 面向对象精要--函数
在JavaScript中,函数其实也是对象.是函数不同于其他对象的特点是:函数存在一个被称为[[Call]]的内部属性.[[Call]]属性是函数独有的,表明该对象可以被执行.ECMAScript 定 ...
- 前端学习 第二弹: JavaScript中的一些函数与对象(1)
前端学习 第二弹: JavaScript中的一些函数与对象(1) 1.apply与call函数 每个函数都包含两个非继承而来的方法:apply()和call(). 他们的用途相同,都是在特定的作用域中 ...
- JavaScript学习03 JS函数
JavaScript学习03 JS函数 函数就是包裹在花括号中的代码块,前面使用了关键词function: function functionName() { 这里是要执行的代码 } 函数参数 函数的 ...
- 理解和使用 JavaScript 中的回调函数
理解和使用 JavaScript 中的回调函数 标签: 回调函数指针js 2014-11-25 01:20 11506人阅读 评论(4) 收藏 举报 分类: JavaScript(4) 目录( ...
随机推荐
- 自定义Encoder/Decoder进行对象传递
转载:http://blog.csdn.net/top_code/article/details/50901623 在上一篇文章中,我们使用Netty4本身自带的ObjectDecoder,Objec ...
- 在 Visual C# 项目中调用 VBA 中的代码
https://msdn.microsoft.com/zh-cn/library/Bb608613.aspx http://www.cnblogs.com/yangbin1005/archive/20 ...
- 利用VBoxManage对虚拟机格式vdi、vmdk、vhd进行互转
虚拟机顾名思义就是虚拟出来的机器(virtual machine),虚拟化技术也是时下IT界最热门的技术,因其能更加有效利用硬件资源,整合IT应用,降低TCO,节能环保等,说白了就是一台硬件上够强 ...
- Hyper-V和Virtual PC的不同
微软在2003年收购了推出了Virtual PC软件的Connectix公司,并在其后推出了Virtual Server服务器虚拟化软件 Hyper-V跟微软自家的Virtual PC.Virtual ...
- AjaxUpload.3.5.js之ASP.NET 文件上传
一.引入js文件 <script type="text/javascript" src="/Scripts/JQuery.min.js"></ ...
- set常见操作:
(1)sadd 向一个集合中添加一个元素.例如:sadd set1 Hello (2)smembers 查看集合中的所有元素.例如:smembers set1 (3)srem 删除集合中一个指定的元素 ...
- K2任命新的亚太区高级副总裁
K2, 一个屡获殊荣的企业应用软件公司宣布,任命陈光明(Tan Kwang Meng, KM)为亚太区高级副总裁.这次任命是对公司持续发展的肯定,同时也是对将亚太区作为全球扩张战略的关键市场的承诺. ...
- a Makefile
obj-m += showpid.o obj-m += ps.o all: make -C /lib/modules/$(shell uname -r)/build M=$(shell pwd) mo ...
- Introduction to Machine Learning
Chapter 1 Introduction 1.1 What Is Machine Learning? To solve a problem on a computer, we need an al ...
- XCode 自动化打包总结
最近一个礼拜折腾xcode 中ipa 自动化打包,对我来说也说是磕磕碰碰.毕竟对mac下的命令行模式完全不熟悉.而且我们的项目是基于cordova的一个项目. 之前我自己对cordova 项目的命令行 ...