主题:引用类型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高级程序设计》笔记七的更多相关文章

  1. JavaScript高级程序设计笔记(一)

    ---恢复内容开始--- 前三章为基础知识,为了方便以后查看,所以比较啰嗦.这里对函数的基本操作没有记录. 1.JavaScript的实现 虽然 JavaScript 和 ECMAScript 通常都 ...

  2. JavaScript高级程序设计笔记之面向对象

    说起面向对象,大部分程序员首先会想到 类 .通过类可以创建许多具有共同属性以及方法的实例或者说对象.但是JavaScript并没有类的概念,而且在JavaScript中几乎一切皆对象,问题来了,Jav ...

  3. javascript高级程序设计--笔记01

    概述 JavaScript的实现包含三个部分: 1  核心(ECMAScript)   提供核心语言功能 2  文档对象模型(DOM)  一套提供了访问以及操作网页内容的API 3  浏览器对象模型( ...

  4. javascript事件小结(事件处理程序方式)--javascript高级程序设计笔记

    1.事件流:描述的是从页面中接收事件的顺序. 2.事件冒泡:IE的事件流叫做事件冒泡,即事件开始从具体的元素(文档中嵌套层次最深的那个节点)接收,然后逐级向上传播到不具体的节点(文档). 3.事件捕获 ...

  5. JavaScript高级程序设计笔记 事件冒泡和事件捕获

    1.事件冒泡 要理解事件冒泡,就得先知道事件流.事件流描述的是从页面接收事件的顺序,比如如下的代码: <body> <div> click me! </div> & ...

  6. <javascript高级程序设计>笔记

    1.要讲一个值转换成其对应的Boolean类型 ,可以调用转型函数Boolean(). var message=“hello world!”; var messageAsBoolean=Boolean ...

  7. 读书时间《JavaScript高级程序设计》七:表单

    在HTML中表单是有<form>元素表示,在JS中表单对应的是HTMLFormElement类型. 表单自有的属性和方法: 获取表单 1. 通过ID  document.getElemen ...

  8. javaScript高级程序设计笔记 2

    Undefinde Null Boolean Number String    基本类型 Object    引用类型 只有引用类型才能动态的添加属性 赋值基本类型和引用类型也不相同,复制的基本类型的 ...

  9. javaScript高级程序设计笔记 1

    核心  ECMAScript 文档对象模型  DOM 浏览器对象模型 BOM 延迟脚本  defer typeof操作符      判断字符类型  返回   undefined  boolean  s ...

  10. Javascript高级程序设计笔记 <第五章> 引用类型

    一.object类型 创建object实例的方式有两种: //第一种使用new操作符跟构造函数 var person= new Object(); person.name="小王" ...

随机推荐

  1. jdbc驱动的类加载过程

    这段时间跟类加载机制是干上了. 这一篇来分析一下jdbc工作过程中涉及到的类加载流程,重点是想看看在双亲委派模型不适用的时候,如何解决. 第一步,加载数据库的驱动 Class.forName(&quo ...

  2. 简单RPC框架-基于Consul的服务注册与发现

    *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !important; } /* ...

  3. Node.js入门第一天

    一.Node.js简介 1.1 简介 V8引擎本身就是用于Chrome浏览器的JS解释部分,但是Ryan Dahl这哥们,鬼才般的,把这个V8搬到了服务器上,用于做服务器的软件. Node.js是一个 ...

  4. iOS textfield 限制输入字数长度

    iOS textfield限制输入的最大长度 [self.textFiled addTarget:self action:@selector(textFieldDidChange:) forContr ...

  5. springcloud(七):配置中心svn示例和refresh

    上一篇springcloud(六):配置中心git示例留了一个小问题,当重新修改配置文件提交后,客户端获取的仍然是修改前的信息,这个问题我们先放下,待会再讲.国内很多公司都使用的svn来做代码的版本控 ...

  6. ELK安装与配置

    ELK介绍 日志主要包括系统日志.应用程序日志和安全日志.系统运维和开发人员可以通过日志了解服务器软硬件信息.检查配置过程中的错误及错误发生的原因.经常分析日志可以了解服务器的负荷,性能安全性,从而及 ...

  7. nodejs服务实现反向代理,解决本地开发接口请求跨域问题

    前后端分离项目需要解决第一个问题就是,前端本地开发时如何解决通过ajax请求产生的跨域的问题.一般的做法是通过本地配置nginx反向代理进行处理的,除此之外,还可以通过nodejs来进行代理接口.当然 ...

  8. Python 关于字符串处理技巧

    1.使用多个字符或字符串作为分隔符分割字符串 str.split()方法只能制定单个字符或字符串作为分割符, re.split()方法可以用正则表达式作为分割符, re.split()跟str.spl ...

  9. be 动词

    be 动词:表达人或事物的状态,即身份.性质.特征状态等 be动词 在翻译里面我们称之为缺项词,在我们的文化中很难找到一个具体的词汇与之像应对,我们只能用一个句子去解释它. be动词主要是用来表达人或 ...

  10. Bash shell执行命令的优先级

    1.别名2.关键字:if.function.while .until等3.函数4.内置命令5.可执行程序或脚本 别关函内可 =-=-=-=-=Powered by Blogilo