JavaScript模式读书笔记 第4章 函数
1。JavaScript函数具有两个特点: 函数是第一类对象 函数能够提供作用域
//这是一个函数表达式//它做为一个參数传递给函数 CallMecallMe(function(){//这是命名函数表达式//也被称作匿名函数});//这是命名函数表达式callMe(function me(){//这里是命名函数表达式//而且其名称为me});//还有一个函数表达式var myobject = {say:function(){//这里是函数表达式}};
<script>function writeCode(callBack){console.log("callBanck before.....");callBack();console.log("callBanck after.....");}function callBack(){console.log("callBanck ..........");}writeCode(callBack);</script>//输出结果callBanck before..... test1.html:14callBanck .......... test1.html:21
callBanck after.....
<script>//查找节点var findNodes = function(){var i = 100000,//复杂循环nodes[],//存储本次执行结果found;//零时存储找到的节点while(i){//业务逻辑处理//....found = 1;i -= 1;nodes.push(found);}return nodes;};//对节点处理var hide = function(nodes){var i = 0, max = nodes.length;for(; i < max; i += 1){//复杂业务逻辑处理console.log(nodes[i]);}};//执行函数hide(findNodes());</script>
<script>var findNodes = function(callBack){var i = 10000,nodes = [],dound;//检查回调函数是否为可调用if(typeof callBack != "function"){callBack = false;}while(i){i -= 1;//逻辑处理 。 。 。 。。。。 。//执行回调函数if(callBack){callBack(found);}nodes.push[found];}return nodes;};var hide = function(node){//对node节点进行相应的业务处理};findNodes(hide);</script>
var scareMe = function(){console.log("FIRST!");scareMe = function(){console.log("SECOND!");};};scareMe();scareMe();输出结果:日志: FIRST!
日志: SECOND!
<script>var scareMe = function(){console.log("FIRST!");scareMe = function(){console.log("SECOND!");};};//加入新的属性scareMe.property = "property";//赋值给还有一个不同名称的变量var prank = scareMe;//在一个方法里使用var spooky = {boo: scareMe};prank();// firstprank();//firstconsole.log(prank.property);//propertyspooky.boo();//firstspooky.boo();//firstconsole.log(spooky.boo.property);//property//使用自己定义函数scareMe();//secondscareMe();//secondconsole.log(scareMe.property);//undefined</script>输出结果:FIRST! test5.html:14
property test5.html:332FIRST! test5.html:14
property test5.html:372SECOND! test5.html:17
undefined
(function(){alert("One");}());
例如以下代码就不会创建过多的全局变量。
<script>(function(){var days = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat'],today = new Date(),msg = "Today is " + days[today.getDay()] + "," + today.getDate();alert(msg);}());</script>
(function(who, how){console.log("i'm " + who + ",I'm " + how);}("pengke", "shabi"));
var result = (function(){return 2 +2 ;})();
<script>
function addPerson(conf){ console.log(conf.first);
console.log(conf.second);
console.log(conf);
}
var conf = {first: "abc",
second: "a",
third: "c"}; addPerson(conf); </script>
<script>//定义函数var sayHi = function(who){console.log("Hello " + (who ? "," + who : "") + "!");};sayHi();sayHi('world');sayHi.apply(null, ["world"]);</script>
运行结果Hello ! test10.html:15Hello ,world! test10.html:15Hello ,world!
<script>//curry化的add函数function add(x, y){var oldx = x, oldy = y;if(typeof oldy == "undefined"){return function(newy){console.log(oldx + newy);};}console.log(x + y);}console.log(typeof add(5));//functionadd(3)(4);//7var add2000 = add(2000);add2000(10);//2010</script>
JavaScript模式读书笔记 第4章 函数的更多相关文章
- JavaScript模式读书笔记 文章3章 文字和构造
1.对象字面量 -1.Javascript中所创建的自己定义对象在任务时候都是可变的.能够从一个空对象開始,依据须要添加函数.对象字面量模式能够使我们在创建对象的时候向其加入函数. ...
- C++ primer plus读书笔记——第8章 函数探幽
第8章 函数探幽 1. 对于内联函数,编译器将使用相应的函数代码替换函数调用,程序无需跳到一个位置执行代码,再调回来.因此,内联函数的运行速度比常规函数稍快,但代价是需要占用更多内存. 2. 要使用内 ...
- C++ primer plus读书笔记——第7章 函数——C++的编程模块
第7章 函数--C++的编程模块 1. 函数的返回类型不能是数组,但可以是其他任何一种类型,甚至可以是结构和对象.有趣的是,C++函数不能直接返回数组,但可以将数组作为结构或对象的组成部分来返回. 2 ...
- 【javascript dom读书笔记】 第九章 CSS-DOM
用dom设置样式 element.style.property = value 何时用dom脚本设置样式 作者写到:绝大多数的现代浏览器,虽然对css伪类的支持不是很完整,但是对dom都有良好的支持, ...
- 《C和指针》 读书笔记 -- 第7章 函数
1.当程序调用一个无法见到原型的函数时,编译器便认为该函数返回一个整型值.如果这个值实际上是非整型值时,还得执行类型转换,所以函数原型声明有时很重要. 2.值的类型并不是值的内在本质,而是取决于它被使 ...
- 《C++ Primer Plus 6th》读书笔记 - 第8章 函数探幽
1. 摘录 默认参数指的是当函数调用中省略了实参时自动使用的一个值. 默认参数并非编程方面的重大突破,而只是提供了一种便捷的方式.使用默认参数,可以减少要定义的析构函数.方法以及方法重载的数量. 试图 ...
- 《C++ Primer 4th》读书笔记 第7章-函数
原创文章,转载请注明出处:http://www.cnblogs.com/DayByDay/p/3912413.html
- 《Linux内核分析》读书笔记(四章)
<Linux内核分析>读书笔记(四章) 标签(空格分隔): 20135328陈都 第四章 进程调度 调度程序负责决定将哪个进程投入运行,何时运行以及运行多长时间,进程调度程序可看做在可运行 ...
- SQL Server2012 T-SQL基础教程--读书笔记(1-4章)
SQL Server2012 T-SQL基础教程--读书笔记(1-4章) SqlServer T-SQL 示例数据库:点我 Chapter 01 T-SQL 查询和编程背景 1.3 创建表和定义数据的 ...
随机推荐
- C# 文件操作【转】
本文也收集了目前最为常用的C#经典操作文件的方法,具体内容如下:C#追加.拷贝.删除.移动文件.创建目录.递归删除文件夹及文件.指定文件夹下面的所有内容copy到目标文件夹下面.指定文件夹下面的所有内 ...
- Sublime Text2安装emmet
一.安装Package Control 如果Preferences中没有Package Control,需要手动安装.安装方法如下: 访问Package Controls站点复制一段python命令安 ...
- vim之<F12> 一键生成tags的一些小优化
在之前我写的<<vim之tags>>中最后提到将vim和tags成和更新的全部集中到一个<f12>键上来. 这在实践中证明是相当方便的, 不过依然村庄几个问题如下: ...
- 【sqli-labs】 less52 GET -Blind based -Order By Clause -numeric -Stacked injection(GET型基于盲注的整型Order By从句堆叠注入)
出错被关闭了 http://192.168.136.128/sqli-labs-master/Less-52/?sort=1' http://192.168.136.128/sqli-labs-mas ...
- (转)学习淘淘商城第二十二课(KindEditor富文本编辑器的使用)
http://blog.csdn.net/u012453843/article/details/70184155 上节课我们一起学习了怎样解决KindEditor富文本编辑器上传图片的浏览器兼容性问题 ...
- UpdateData
UpdateData 类似于C语言的scanf printf函数 管理控件与关联变量之间的数据更新. updatedata(true)把界面输入的数值更新到关联变量中,updatedata(false ...
- 使用原生JS的AJAX读取json全过程
首先ajax(async javascript and xml)是用于前端与后端文件比如xml或者json之间的交互.他是一种异步加载技术,意味着你点击某个加载事件是再也不用刷新整个页面,而是发送局部 ...
- 【剑指Offer】65、矩阵中的路径
题目描述: 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径.路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子.如果一条路径经 ...
- WING IDE 快捷键
工欲善其事必先利其器,所以我们无论使用什么编译器,都要熟悉一些快捷键. Ctrl+N新建文件 Ctrl+O 打开文件夹 Ctrl+W 关闭当前文件 Ctrl+S 保存文件 Ctrl+shif+S 另存 ...
- 阅读《JavaScript设计模式》第三章心得
简单工厂模式 1.通过类实例化对象创建 传统的用面向对象方法去创建很多类去实现某些功能不妥当,这样不仅占用的很多类名称,而且别人使用这些方法的同时要记住每个类的名字,所以这样不适合团队开发,所以我们可 ...