文档章节

自执行函数

路是实践出来的
 路是实践出来的
发布于 2017/04/25 11:11
字数 496
阅读 4
收藏 0
点赞 0
评论 0

1、函数声明、函数表达式、匿名函数

针对函数声明:function fnname()使用function关键字声明一个函数,再指定一个函数名。叫做函数声明

函数表达式 var fnname=function(){},使用function关键字声明一个函数,但没有给函数命名,最后将匿名函数赋予一个变量。叫做函数表达式,这是最常见的函数表达式语法形式。

函数声明和函数表达式不同之处在于,一、Javascript引擎在解析javascript代码时会‘函数声明提升'(Function declaration Hoisting)当前执行环境(作用域)上的函数声明,而函数表达式必须等到Javascirtp引擎执行到它所在行时,才会从上而下一行一行地解析函数表达式,二、函数表达式后面可以加括号立即调用该函数,函数声明不可以,只能以fnName()形式调用 。以下是两者差别的两个例子。

复制代码 代码如下:
fnName();
function fnName(){
    ...
}
//正常,因为‘提升'了函数声明,函数调用可在函数声明之前
fnName();
var fnName=function(){
    ...
}
//报错,变量fnName还未保存对函数的引用,函数调用必须在函数表达式之后

在函数体后面加括号可以实现立即调用,这个函数必须是函数表达式

只有var fname=function(){}()可以进行立即执行

function fname(){}()不会报错,但是只会解析函数声明,不会进行直接调用。

function(){}()//语法错误,虽然匿名函数属于函数表达式,但是没有进行赋值

优点:

可以将自己的业务数据封装到一个容器之中。容器内部可以访问外部的变量,而外部环境不能

访问容器内部的变量。因此 内部定义的变量不会和外部变量发生冲突。俗称“匿名包裹器”或者“命名空间”

© 著作权归作者所有

共有 人打赏支持
路是实践出来的
粉丝 2
博文 24
码字总数 8222
作品 0
西安
python笔记day5

http://www.cnblogs.com/wupeiqi/articles/4938499.html python解释器执行顺序:从上到下 def foo(): -->将foo函数读入内存,但不执行函数体内容 print 'abc' -->略过这行 foo -->表示foo函数......

carrick_ma ⋅ 2017/07/23 ⋅ 0

JS函数式编程中compose的实现

有以下需求: 创建一个compose函数,返回函数集 functions 组合后的复合函数, 也就是一个函数执行完之后把返回的结果再作为参数赋给下一个函数来执行. 以此类推. 在数学里, 把函数 f(), g(), ...

_Dot大师兄 ⋅ 2017/11/08 ⋅ 0

一次性让你懂async/await,解决回调地狱

什么是async? 欢迎留言讨论 函数是 函数的语法糖。使用 关键字 来表示,在函数内部使用 来表示异步。相较于 , 函数的改进在于下面四点: 内置执行器。 函数的执行必须依靠执行器,而 函数自...

就是说,必须等所有 函数执行完毕后,才会告诉我成功了还是失败了,执行或者 ⋅ 06/17 ⋅ 0

关于JavaScript的执行环境与作用域的解读

关于JavaScript的执行环境与作用域的解读 JavaScript高级编程中关于执行环境与作用域的问题在第四章有过提及,但是交代的不是很明确,因此查阅了网上各种资料,对于执行环境以及作用域有了一...

517270667 ⋅ 2017/07/04 ⋅ 0

Learn Python3:装饰器

一、理解装饰器 通俗点说,当我们想给一个函数增强额外的功能,但又不想修改原函数的定义,同时新增的功能其它函数可能也需要使用,装饰器就是来解决这种需求的,将与原函数功能无关的代码提...

Othershe ⋅ 2017/11/06 ⋅ 0

makefile(六)使用函数

在makefile中可以使用函数来处理变量,从而使用户的命令和规则更灵活,函数调用后,函数的返回值可以当做变量来使用。 一、函数调用的语法 makefile文件中的函数调用以$标示,其语法如下: ...

大道无名 ⋅ 2016/10/31 ⋅ 0

NsObject的load和initialize方法

load--当类被引用进程序的时候会执行这个函数。 当父类和子类都实现load函数时,父类的load函数会被先执行。load函数是系统自动加载的,因此不需要调用父类的load函数,否则父类的load函数会...

Redding ⋅ 2014/04/23 ⋅ 0

16、ES6的Generator函数。

Generator函数配合yield关键字可以暂停函数。启动函数。 1、Generator函数的定义。 Generator函数的定义是:普通函数的形参括号前面加个星号。如下所示: 2、Generator函数中可以使用yield关...

王坤charlie ⋅ 03/18 ⋅ 0

Promise 源码:实现一个简单的 Promise

前言 Promise 是 ES6 新增的一个内置对象, 它是用来避免回调地狱的一种解决方案。 从以前一直嵌套传回调函数,到使用 Promise 来链式异步回调。Promise 究竟是怎么实现,从而达到回调函数“...

cobish ⋅ 05/21 ⋅ 0

co 函数库的含义和用法

进入正文之前,先插播一条消息。 我七年前翻译的《软件随想录》再版了(京东链接)。这次是《Joel论软件》两卷同时再版,第一卷是新译本,第二卷是我翻译的。 本书的作者是著名程序员、Stack...

阮一峰 ⋅ 2015/05/06 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Greys Java在线问题诊断工具

Greys是一个JVM进程执行过程中的异常诊断工具。 在不中断程序执行的情况下轻松完成JVM相关问题排查工作 目标群体 有时候突然一个问题反馈上来,需要入参才能完成定位,但恰恰没有任何日志。回...

素雷 ⋅ 23分钟前 ⋅ 0

git从远程仓库拉取代码的常用指令

一种(比较麻烦的)拉代码的方法 git clone //克隆代码库,与远程代码库的主干建立连接,如果主干已经在就不用再clone啦,克隆路径为当前路径下的新创建的文件夹 git checkout -b //本地建立...

Helios51 ⋅ 37分钟前 ⋅ 0

005. 深入JVM学习—Java堆内存参数调整

1. JVM整体内存调整图解(调优关键) 实际上每一块子内存区域都会存在一部分可变伸缩区域,其基本流程:如果内存空间不足,则在可变的范围之内扩大内存空间,当一段时间之后,内存空间不紧张...

影狼 ⋅ 42分钟前 ⋅ 0

内存障碍: 软件黑客的硬件视图

此文为笔者近日有幸看到的一则关于计算机底层内存障碍的学术论文,并翻译(机译)而来[自认为翻译的还行],若读者想要英文原版的论文话,给我留言,我发给你。 内存障碍: 软件黑客的硬件视图...

Romane ⋅ 今天 ⋅ 0

SpringCloud 微服务 (七) 服务通信 Feign

壹 继续第(六)篇RestTemplate篇 做到现在,本机上已经有注册中心: eureka, 服务:client、order、product 继续在order中实现通信向product服务,使用Feign方式 下面记录学习和遇到的问题 贰 or...

___大侠 ⋅ 今天 ⋅ 0

gitee、github上issue标签方案

目录 [TOC] issue生命周期 st=>start: 开始e=>end: 结束op0=>operation: 新建issueop1=>operation: 评审issueop2=>operation: 任务负责人执行任务cond1=>condition: 是否通过?op3=>o......

lovewinner ⋅ 今天 ⋅ 0

浅谈mysql的索引设计原则以及常见索引的区别

索引定义:是一个单独的,存储在磁盘上的数据库结构,其包含着对数据表里所有记录的引用指针. 数据库索引的设计原则: 为了使索引的使用效率更高,在创建索引时,必须考虑在哪些字段上创建索...

屌丝男神 ⋅ 今天 ⋅ 0

String,StringBuilder,StringBuffer三者的区别

这三个类之间的区别主要是在两个方面,即运行速度和线程安全这两方面。 首先说运行速度,或者说是, 1.执行速度 在这方面运行速度快慢为:StringBuilder(线程不安全,可变) > StringBuffer...

时刻在奔跑 ⋅ 今天 ⋅ 0

java以太坊开发 - web3j使用钱包进行转账

首先载入钱包,然后利用账户凭证操作受控交易Transfer进行转账: Web3j web3 = Web3j.build(new HttpService()); // defaults to http://localhost:8545/Credentials credentials = Wallet......

以太坊教程 ⋅ 今天 ⋅ 0

Oracle全文检索配置与实践

Oracle全文检索配置与实践

微小宝 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部