文档章节

自执行函数

路是实践出来的
 路是实践出来的
发布于 2017/04/25 11:11
字数 496
阅读 4
收藏 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
博文 27
码字总数 8878
作品 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
0
JS函数式编程中compose的实现

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

_Dot大师兄
2017/11/08
0
0
一次性让你懂async/await,解决回调地狱

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

就是说,必须等所有 函数执行完毕后,才会告诉我成功了还是失败了,执行或者
06/17
0
0
译 | 我从未真正搞懂 JavaScript 闭包

原文: I never understood JavaScript closures 作者: Olivier De Meulder 时间: Sep 7, 2017 译注:作者从 JavaScript 的原理出发,详细解读执行过程,通过“背包”的形象比喻,来解释闭包。...

程序师
09/10
0
0
C#类继承中构造函数的执行序列

不知道大家在使用继承的过程中有木有遇到过调用构造函数时没有按照我们预期的那样执行呢?一般情况下,出现这样的问题往往是因为类继承结构中的某个基类没有被正确实例化,或者没有正确给基类...

yixuan.han
09/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

20180920 rzsz传输文件、用户和用户组相关配置文件与管理

利用rz、sz实现Linux与Windows互传文件 [root@centos01 ~]# yum install -y lrzsz # 安装工具sz test.txt # 弹出对话框,传递到选择的路径下rz # 回车后,会从对话框中选择对应的文件传递...

野雪球
今天
2
0
OSChina 周四乱弹 —— 毒蛇当辣条

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @ 达尔文:分享花澤香菜/前野智昭/小野大輔/井上喜久子的单曲《ミッション! 健?康?第?イチ》 《ミッション! 健?康?第?イチ》- 花澤香菜/前野智...

小小编辑
今天
9
3
java -jar运行内存设置

java -Xms64m #JVM启动时的初始堆大小 -Xmx128m #最大堆大小 -Xmn64m #年轻代的大小,其余的空间是老年代 -XX:MaxMetaspaceSize=128m # -XX:CompressedClassSpaceSize=6...

李玉长
今天
4
0
Spring | 手把手教你SSM最优雅的整合方式

HEY 本节主要内容为:基于Spring从0到1搭建一个web工程,适合初学者,Java初级开发者。欢迎与我交流。 MODULE 新建一个Maven工程。 不论你是什么工具,选这个就可以了,然后next,直至finis...

冯文议
今天
2
0
RxJS的另外四种实现方式(四)——性能最高的库(续)

接上一篇RxJS的另外四种实现方式(三)——性能最高的库 上一篇文章我展示了这个最高性能库的实现方法。下面我介绍一下这个性能提升的秘密。 首先,为了弄清楚Most库究竟为何如此快,我必须借...

一个灰
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部