首页 > 编程笔记 > JavaScript笔记 > JS函数
JS偏函数
偏函数是 JS 函数柯里化运算的一种特定应用场景。简单描述,就是把一个函数的某些参数先固化,也就是设置默认值,返回一个新的函数,在新函数中继续接收剩余参数,这样调用这个新函数会更简单。
示例1
下面是一个类型检测函数,接收两个参数,第 1 个表示类型字符串,第 2 个表示检测的数据。var isType = function (type, obj) { //偏函数 return Object.prototype.toString.call(obj) == '[object ' + type + ']'; }该函数包含两个设置参数,使用时比较繁琐。一般常按以下方式进行设计。
var isString = function (obj) { return Object.prototype.toString.call(obj) == '[object String]'; }; var isFunction = function (obj) { return Object.prototype.toString.call(obj) == '[object Function]'; };函数接收的参数单一,检测的功能也单一和明确,这样更便于在表达式运算中有针对性的调用。下面对 isType() 函数进行扁平化设计,代码如下:
var isType = function (type) { return function (obj) { return Object.prototype.toString.call(obj) == '[object ' + type + ']'; } }然后根据 JS 偏函数获取不同类型检测函数。
var isString = isType("String"); //专一功能检测函数,检测字符串 var isFunction = isType("Function"); //专一功能检测函数,检测字符串应用代码如下:
console.log(isString("12")); //true console.log(isFunction(function () {})); //true console.log(isFunction({})); //false
示例2
下面示例设计一个 wrap() 偏函数,该函数的主要功能是产生一个 HTML 包裹函数,即样式标签。function wrap(tag) { var stag = '<' + tag + '>'; var etag = '</' + tag.replace(/s.*/, '') + '>'; return function(x) { return stag + x + etag; } } var b = wrap('b'); document.write(b('粗体字')); var i = wrap('i'); document.write(i('斜体字')); var u = wrap('u'); document.write(u('下划线字'));
所有教程
- C语言入门
- C语言编译器
- C语言项目案例
- 数据结构
- C++
- STL
- C++11
- socket
- GCC
- GDB
- Makefile
- OpenCV
- Qt教程
- Unity 3D
- UE4
- 游戏引擎
- Python
- Python并发编程
- TensorFlow
- Django
- NumPy
- Linux
- Shell
- Java教程
- 设计模式
- Java Swing
- Servlet
- JSP教程
- Struts2
- Maven
- Spring
- Spring MVC
- Spring Boot
- Spring Cloud
- Hibernate
- Mybatis
- MySQL教程
- MySQL函数
- NoSQL
- Redis
- MongoDB
- HBase
- Go语言
- C#
- MATLAB
- JavaScript
- Bootstrap
- HTML
- CSS教程
- PHP
- 汇编语言
- TCP/IP
- vi命令
- Android教程
- 区块链
- Docker
- 大数据
- 云计算