AngularJs angular.identity和angular.noop详解
angular.identity
函数返回本身的第一个参数。这个函数一般用于函数风格。
----------以上是官网对该接口的说明,只能说这个文档写得也太二,让人完全看不懂。要理解它的用途,可直接看以下代码:
function getResult(fn, input) {
//其实我们可以直接这样写:
//return fn(input); 但这样写有个问题,如果传入的fn参数不是一个function类型,会导致出错。
//官方推荐的写法如下:
return (fn || angular.identity)(input);//这里如果fn参数为空值,使用angular.identity,那么当传入的第一个参数不是function类型时,相当于第一个参数是function(input){return input}
};
//等同于如下写法
function getResult(fn, input) {
if(angular.isFunction(fn)){
return input;
}
return fn(input);
};
getResult(function(n) { return n * 2; }, 21); // returns 42
getResult(null, 21); // returns 21
getResult(undefined, 21); // returns 21
angular.noop
一个不执行任何操作的空函数。这个函数一般用于函数风格。
------------------
官网的api说明,依然是简洁风,不管你看不看得懂。不过这里如果你了解了jquery.noop()函数,这里就容易理解了,因为他们两个的用法是一样样的
var getResult = function (fn, val) {
//这里如果直接写为
//return fn(val);
//也不会出错,但如果传入的第一个参数为空,则会出错。
return (fn || angular.noop)(val);//这样写,如果传入的值不是函数,也不会出错
};
var firstResult = getResult(function(input){console.log(input);}, 3);//
var secondResult = getResult(null, 3);//undefined
var thirdResult = getResult(undefined, 3);// undefined
AngularJs angular.identity和angular.noop详解的更多相关文章
- AngularJs angular.identity和angular.noop
angular.identity 函数返回本身的第一个参数.这个函数一般用于函数风格. 格式:angular.identity() 使用代码: (function () { angular.modul ...
- Angular - - angular.identity和angular.noop
angular.identity 函数返回本身的第一个参数.这个函数一般用于函数风格. 格式:angular.identity() 使用代码: (function () { angular.modul ...
- Angular Npm Package.Json文件详解
Angular7 Npm Package.Json文件详解 近期时间比较充裕,正好想了解下Angular Project相关内容.于是将Npm官网上关于Package.json的官方说明文档进行了 ...
- angular : ng-animate : ng-show 原理,详解
这是我第一次写博客,请大家多多指教^^ 拷贝试试 <!DOCTYPE html> <html> <head> <meta http-equiv="C ...
- Angular中ui-grid的使用详解
Angular中ui-grid的使用 在项目开发的过程中,产品经理往往会提出各种需求,以提高用户体验.最近,项目中用到的表格特别多,而且表格的列数和行数也超多.为了让用户浏览更爽,产品经理提出,当表格 ...
- angular学习之关于ng-class详解
1,定义和用法 ng-class 指令用于给 HTML 元素动态绑定一个或多个 CSS 类. ng-class 指令的值可以是字符串,对象,或一个数组. 如果是字符串,多个类名使用空格分隔. 如果是对 ...
- angular : ng-animate : css 原理,详解
通过几中指令就能完成1.2.xx的animate ·ng-repeat ·ng-show,ng-hide ·ng-if,ng-include,ng-view ·ng-switch ·ng-class ...
- AngularJS + CoffeeScript 前端开发环境配置详解
AngularJS 号称 '第一框架' ('The first framework') 确实是名不虚传.由其从jQuery中完全转入AngularJS后就有无法离开他的感觉了.虽然AngularJS的 ...
- AngularJS 中的Promise --- $q服务详解
先说说什么是Promise,什么是$q吧.Promise是一种异步处理模式,有很多的实现方式,比如著名的Kris Kwal's Q还有JQuery的Deffered. 什么是Promise 以前了解过 ...
随机推荐
- iOS TextField用法大全
//初始化textfield并设置位置及大小 UITextField *text = [[UITextField alloc]initWithFrame:CGRectMake(20, 20, 130, ...
- HashSet和HashMap的区别
HashSet和HashMap的区别.Java的HashSet类是由哈希表支持.它不保证 set 的迭代顺序:特别是它不保证该顺序恒久不变.此类允许使用 null 元素.HashSet类为基本操作提供 ...
- chrome 跨域设置
右击chrome快捷方式,在启动指令后面添加--disable-web-security,然后保存.如下: "C:\Program Files (x86)\Google\Chrome\App ...
- React初识(按钮点击+输入绑定)
简单按钮点击事件: <!DOCTYPE html><html> <head> <meta charset="utf-8"> ...
- python——django的post请求
两次被同一块石头绊倒简直不可原谅!第一次写django程序的时候,就因为ajax post请求折腾了整整一天,时隔两个多月昨天又被虐一整晚.叔可忍婶儿也不能忍了!!!重要的事情写下来,为以后轻松碾压p ...
- Android NDK 项目依赖简单示例
目录文件结构如图, 进入main目录执行命令 .ndkbuild NDK_MODULE_PATH=../ 说明 .ndkbuild请替换成有效的ndk-build的命令 所有文件下载 http://p ...
- jquery mobile在页面加载时添加加载中效果 document.ready 和window.onload执行顺序比较
想要添加这个效果,先来弄明白页面的加载和事件执行顺序,看这个简单例子: <html xmlns="http://www.w3.org/1999/xhtml"> < ...
- Win7/Win8/Win8.1/Win10下的DragEnter DragDrop事件不触发
Win7/Win8/Win8.1/Win10下的DragDrop事件不触发 2011-02-02 来自:博客园 字体大小:[大 中 小] 摘要:你的应用程序需要从windows资源管理器拖动文件到 ...
- SQL 子查询,连接查询复习
use lianxi0720 go --创建部门表 create table bumen ( bcode int primary key,--部门编号 bname ), --部门名称 bceo ), ...
- 运行DbVisualizer报the java_home environment viariable does not point to a working 32-bit JDK OR JRE错误
报这个错误的根本原因就是DbVisualizer和JDK的版本不一致,那么知道原因,修改起来就方便了,要么修改DbVisualizer的版本,要么修改JDK的版本. 1.JDK7 64位 那么就在Db ...