《javascript高级程序设计》笔记七
主题:引用类型Function的介绍。
今天首先说的就是Function类型。下面就是定义函数的两种方法,第一种使用函数声明语法定义,第二种使用函数表达式定义。这两种定义函数的方式几乎没有什么区别。
function func1() {}
var func2 = function() {}
console.log(typeof(func1)); //function
console.log(typeof(func2)); //function
非要说区别就如下面代码所示。在执行JavaScript前会对申明的变量和函数进行提前,把这些都自动放到执行代码的最上方,但是变量的赋值却不提升!是不是很费解,不过这就是JavaScript的规定,一定要注意!
console.log(hello()); //"Hello,world."
console.log(hi()); //undefinded
function hello() {
return "Hello,world.";
}
var hi = function() {
return "Hi,world.";
};
函数源于对象,因此实际上函数名实际上也是一个指向函数对象的指针。下面代码中的hello和hi就是指向同一个function对象。
function hello() {
return "Hello,world!";
}
hello(); //"Hello,world!"
var hi = hello; //注意:不带括号的函数名访问的是函数指针
hi(); //"Hello,world!"
在前面就提过,JavaScript中函数没有重载。这里,我们可以通过函数表达式的例子更清楚了解这点。
var add = function(num) {
return num + 1;
};
add = function(num) {
return num + 2;
};
var result = add(1); //3
//备注:很明显,第二次的function覆盖了第一次function
函数可以作为一个值再传给另一个函数。
function addFunc(func, arg) {
return func(arg);
}
var add = function(num) {
return num + 1;
};
var result = addFunc(add, 1);
console.log(result); //
(拓展)函数的apple()和call()方法。有兴趣可以查查资料,后面还会介绍!
var name = "xuchaoi";
var blog = {name: "blog.xuchaoi"};
function getName() {
console.log(this.name);
}
getName(); //xuchaoi
getName.apple(blog); //blog.xuchaoi
getName.call(blog); //blog.xuchaoi
《javascript高级程序设计》笔记七的更多相关文章
- JavaScript高级程序设计笔记(一)
---恢复内容开始--- 前三章为基础知识,为了方便以后查看,所以比较啰嗦.这里对函数的基本操作没有记录. 1.JavaScript的实现 虽然 JavaScript 和 ECMAScript 通常都 ...
- JavaScript高级程序设计笔记之面向对象
说起面向对象,大部分程序员首先会想到 类 .通过类可以创建许多具有共同属性以及方法的实例或者说对象.但是JavaScript并没有类的概念,而且在JavaScript中几乎一切皆对象,问题来了,Jav ...
- javascript高级程序设计--笔记01
概述 JavaScript的实现包含三个部分: 1 核心(ECMAScript) 提供核心语言功能 2 文档对象模型(DOM) 一套提供了访问以及操作网页内容的API 3 浏览器对象模型( ...
- javascript事件小结(事件处理程序方式)--javascript高级程序设计笔记
1.事件流:描述的是从页面中接收事件的顺序. 2.事件冒泡:IE的事件流叫做事件冒泡,即事件开始从具体的元素(文档中嵌套层次最深的那个节点)接收,然后逐级向上传播到不具体的节点(文档). 3.事件捕获 ...
- JavaScript高级程序设计笔记 事件冒泡和事件捕获
1.事件冒泡 要理解事件冒泡,就得先知道事件流.事件流描述的是从页面接收事件的顺序,比如如下的代码: <body> <div> click me! </div> & ...
- <javascript高级程序设计>笔记
1.要讲一个值转换成其对应的Boolean类型 ,可以调用转型函数Boolean(). var message=“hello world!”; var messageAsBoolean=Boolean ...
- 读书时间《JavaScript高级程序设计》七:表单
在HTML中表单是有<form>元素表示,在JS中表单对应的是HTMLFormElement类型. 表单自有的属性和方法: 获取表单 1. 通过ID document.getElemen ...
- javaScript高级程序设计笔记 2
Undefinde Null Boolean Number String 基本类型 Object 引用类型 只有引用类型才能动态的添加属性 赋值基本类型和引用类型也不相同,复制的基本类型的 ...
- javaScript高级程序设计笔记 1
核心 ECMAScript 文档对象模型 DOM 浏览器对象模型 BOM 延迟脚本 defer typeof操作符 判断字符类型 返回 undefined boolean s ...
- Javascript高级程序设计笔记 <第五章> 引用类型
一.object类型 创建object实例的方式有两种: //第一种使用new操作符跟构造函数 var person= new Object(); person.name="小王" ...
随机推荐
- 深入理解Java虚拟机 - 学习笔记 1
Java内存区域 程序计数器 (Program Counter Register) 是一块较小的内存空间,可以看作是当前线程所执行的字节码的行号指示器.在虚拟机的概念模型里,字节码解释器工作时就是通过 ...
- OpenGL: Rotation vector sensor of Android and Device motion of iOS
为了实现一个全景图片展示的功能,需要借助手机的姿态传感器,实现一个这样的功能:当手机旋转时,视角也跟着旋转(读者若理解不能,可以参考下现在流行的 VR 应用,使用陀螺仪模式时的效果,亦可称作" ...
- 论MySQL何时使用索引,何时不使用索引
索引: 使用索引可快速访问数据库表中的特定信息.索引是对数据库表中一列或多列的值进行排序的一种结构,例如 employee 表的姓(name)列.如果要按姓查找特定职员,与必须搜索表中的所有行相比,索 ...
- Mac下安装第三方模块报错:‘sqlfront.h‘ file not found的解决办法
1.软件环境: mac环境:10.11.6(15G31) python: 3.6 2.问题: sudo pip install pymssql 后出现下面问题: fatal error: 'sqlfr ...
- 为什么各大厂商要抢先跟进H.265?
继爱奇艺.乐视等视频厂商宣布支持 H.265 高清视频后,2014 年 4 月,搜狐视频宣布正式上线视频行业首个 H.265 高清大片专区,可在线观看 200 余部当下最火的超高清大片.国外 BBC ...
- java基础之位运算
java中常见的位运算符:&(逻辑与) |(逻辑或) ~(取反) ^(逻辑异或) >>(右移) <<(左移) >>>(无符号右移) &(逻辑与 ...
- Neo4j 第五篇:批量更新数据
相比图形数据的查询,Neo4j更新图形数据的速度较慢,通常情况下,Neo4j更新数据的工作流程是:每次数据更新都会执行一次数据库连接,打开一个事务,在事务中更新数据.当数据量非常大时,这种做法非常耗时 ...
- Js实现京东无延迟菜单效果(demo)
一个端午节,外面人山人海,又那么热,我认为宅在家里看看慕课网,充实自己来的实际... 这是一个js实现京东无延迟菜单效果,感觉很好,分享给大家... 1.开发基本的菜单结构 2.开发普通的二级菜单效果 ...
- Notification的基本用法以及使用RemoteView实现自定义布局
Notification的作用 Notification是一种全局效果的通知,在系统的通知栏中显示.既然作为通知,其基本作用有: 显示接收到短消息.即时信息等 显示客户端的推送(广告.优惠.新闻等) ...
- xcode8.3 shell 自动打包脚本 记录
题记 xcode升级8.3后发现之前所用的xcode自动打包基本无法使用,因此在网上零碎找到些资料,将之前的脚本简化.此次脚本是基于xcode证书配置进行打包(之前是指定描述文件.相对繁琐).因此代码 ...