JavaScript模式读书笔记 第4章 函数
1。JavaScript函数具有两个特点: 函数是第一类对象 函数能够提供作用域
//这是一个函数表达式
//它做为一个參数传递给函数 CallMe
callMe(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();// first
prank();//first
console.log(prank.property);//property
spooky.boo();//first
spooky.boo();//first
console.log(spooky.boo.property);//property
//使用自己定义函数
scareMe();//second
scareMe();//second
console.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:15
Hello ,world! test10.html:15
Hello ,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));//function
add(3)(4);//7
var 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 创建表和定义数据的 ...
随机推荐
- Git的使用及托管代码到GitHub
首先Git是一个开源的分布式版本控制工具,用git创建代码仓库. 仓库(Repository)是用于保存版本管理所需信息的地方,本地代码 提交到 代码仓库中,如果需要还可以 再推送到 远程仓库中. 所 ...
- MySQL 多表批量更新
使用inner join 进行表更新sql 与mysql 的区别: SQL UPDATE W SET W.字段=新数据 FROM 表a W INNER JOIN 表B d ON W.wID=D.wid ...
- UVM基础之--------uvm_root
uvm_root 是uvm的顶层实例扮演了一个top-level and phase controller 的作用,对于component来说.该类不需要用户实例化,他是一个自动实例化了的类,用户直接 ...
- javascript部分知识点
1:script放置位置: a:<title></title>之后 b:<body>之后 c:<body>中的<div></div&g ...
- 移动web——轮播图
1.我们将5张图片又前后各增加一张,第一张前增加的是原本的第五张,第五张后增加的是原本的第一张,增加的原因无非是手指滑动的时候有轮播效果,这不像以前的轮播图,点击图标就能立刻将ul跳转到指定位置,手机 ...
- 数据结构应用实例#栈&单链表#简易计算器
修改BUG的时候一不小心BUG越修越多,鉴于维护程序并不是学习数据结构的初衷,我已经果断的弃坑了!! 以下内容再不更新,Github上的代码直接无法正常编译运行.... 参考参考就好,学习到栈的作用就 ...
- 神经网络图灵机(Neural Turing Machines, NTM)
近期,Google Deep Mind团队提出了一个机器学习模型,并起了一个特别高大上的名字:神经网络图灵机,我为大家翻译了这篇文章,翻译得不是特别好,有些语句没读明白,欢迎大家批评指正 原论文出处 ...
- anguar相关
1.创建组件 在某目录下创建组件 ng g c content/membersManage 2.创建服务 在某目录下创建服务 ng g service services/storage 2.创建模 ...
- transform: scale(x,y)
作用: 1)缩放 2)反转 水平翻转:transform: scale(-1,1); 垂直翻转:transform: scale(1,-1); 水平垂直翻转: transform: scale(-1, ...
- mha0.56版本安装使用排错
1.master_check_ssh --conf=/etc/app1.conf 这个检查就报错的我觉得百分之九十都是ssh之间连接问题.务必要保证各节点之间都可以免秘钥访问! 2.mas ...