Javascript权威指南(函数)
时间:2020-05-18
本文章向大家介绍Javascript权威指南(函数),主要包括Javascript权威指南(函数)使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
任何函数只要作为方法调用实际上都会传入一个隐式的实参,这个实参是一个对象,方法调用的母体就是这个对象。
函数的参数(实参和形参)
1、可选参数
当调用函数的时候传入的实参比函数声明时指定的形参个数要少,剩下的形参都将设置为undefined
function getPropertyName(o, /*optional*/a) { if(!a) a = [] // 相当于a = a || [] for(var property in o) a.push(property) return a } var a = getPropertyName(o) //将o的属性存储到一个新数组中 get PropertyNames(p, a) //将p的属性追加至数组a中
2、可变长的实参列表:实参对象(不定实参函数)
在函数体内,标识符arguments是指向实参对象的引用,实参对象是一个类数组对象,这样可以通过数字下标就能访问传入函数的实参值,而不是非要通过名字来得到实参,arguments有个length属性
实参对象的个数获取
function f(x, y, z) { if(arguments.lenght != 3) { //抛出异常,并做异常的处理 } //再执行函数的其他逻辑 }
3、callee和caller属性
callee属性在某些时候会非常有用,比如在匿名函数中通过callee来递归地调用自身
var factoral = function(x) { if(x <= 1) return 1 return x * arguments.callee(--x) }
4、闭包
关于闭包的理解
function counter() { var n = 0 return { count: function() {return n++} reset: function() {n = 0} } } //以下c和d是不会互相影响的 var c = counter(), d = counter() c.count() // =>0 d.count() // => 0 c.reset() // reset()和count()共享状态 c.count() // =>0 因为c被重置了 d.count() // =>1 d没有被重置,所以d的count结果还是1
5、函数属性、方法和构造函数
1、length属性
2、prototype属性
3、call()方法和apply()方法
apply()方法和call()类似,但是传入实参的形式和call()有所不同,它的实参都放入一个数组中
function trace(o, m) { var original = o[m] o[m] = function() { console.log(new Date() , "Entering", m) var result = original.apply(this, arguments) console.log(new Date(), "Exiting", m) return result } }
4、bind()方法
5、toString()方法
6、可调用的对象
6、函数式编程
可以使用方法map()和reduce()来实现数组的计算
var sum = function(x, y) {return x + y} var square = function(x){return x * x} var data = [1,1,3,5,5] var mean = data.reduce(sum)/data.length var deviations = data.map(function(x) {return x - mean}) var stddev = Math.sqrt(deviations.map(square).reduce(sum)/(data.length - 1))
7、高阶函数
所谓高阶函数,就是操作函数的函数,它接收一个或多个函数作为参数,并返回一个新函数
function not (f) { return function() { var result = f.apply(this,arguments) return !result } } var even = function(x) { return x % 2 === 0 } var odd = not(even) [1,1,3,5,5].every(odd) ; //true , 每个元素都是奇数
原文地址:https://www.cnblogs.com/jun-web/p/function.html
- 那些年我们的(具有含金量)MySQL测试题目
- Java 异常处理之 论 finally块何时候不走
- Java 中的异常处理机制
- Java 关于接口的那点事儿
- 论 Java 中的内存分配
- Javascript基础回顾 之(一) 类型
- Javascript基础回顾 之(三) 面向对象
- Javascript基础回顾 之(二) 作用域
- 一不小心写了个WEB服务器
- 遍历算法(1)
- Membership三步曲之入门篇 - Membership基础示例
- Java-String.intern的深入研究
- 从Membership 到 .NET4.5 之 ASP.NET Identity
- Membership三步曲之进阶篇 - 深入剖析Provider Model
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法