函数声明、函数表达式、匿名函数、立即执行函数
- 函数声明:function fnName () {…};使用function关键字声明一个函数,再指定一个函数名,叫函数声明。
- 函数表达式 var fnName = function () {…};使用function关键字声明一个函数,但未给函数命名,最后将匿名函数赋予一个变量,叫函数表达式,这是最常见的函数表达式语法形式。
- 匿名函数:function () {}; 使用function关键字声明一个函数,但未给函数命名,所以叫匿名函数,匿名函数属于函数表达式,匿名函数有很多作用,赋予一个变量则创建函数,赋予一个事件则成为事件处理程序或创建闭包等等。
1 fnName(); 2 function fnName(){ 3 ... 4 } 5 //正常,因为‘提升'了函数声明,函数调用可在函数声明之前 6 7 fnName(); 8 var fnName=function(){ 9 ... 10 } 11 //报错,变量fnName还未保存对函数的引用,函数调用必须在函数表达式之后
1 var fnName=function(){ 2 alert('Hello World'); 3 }(); 4 //函数表达式后面加括号,当javascript引擎解析到此处时能立即调用函数 5 function fnName(){ 6 alert('Hello World'); 7 }(); 8 //不会报错,但是javascript引擎只解析函数声明,忽略后面的括号,函数声明不会被调用 9 function(){ 10 console.log('Hello World'); 11 }(); 12 //语法错误,虽然匿名函数属于函数表达式,但是未进行赋值操作, 13 //所以javascript引擎将开头的function关键字当做函数声明,报错:要求需要一个函数名
- ( function(){…} )()和( function (){…} () )
- 立即执行函数:减少闭包占用的内存,执行完即销毁
- function被当做函数声明的开始不能直接加圆括号,而函数表达式后面可以跟圆括号
1 (function(a){ 2 console.log(a); //firebug输出123,使用()运算符 3 })(123); 4 5 (function(a){ 6 console.log(a); //firebug输出1234,使用()运算符 7 }(1234)); 8 9 !function(a){ 10 console.log(a); //firebug输出12345,使用!运算符 11 }(12345); 12 13 +function(a){ 14 console.log(a); //firebug输出123456,使用+运算符 15 }(123456); 16 17 -function(a){ 18 console.log(a); //firebug输出1234567,使用-运算符 19 }(1234567); 20 21 var fn=function(a){ 22 console.log(a); //firebug输出12345678,使用=运算符 23 }(12345678)
==>参考自http://www.jb51.net/article/50967.htm
转载于:https://www.cnblogs.com/NB-JDzhou/p/6932836.html
函数声明、函数表达式、匿名函数、立即执行函数相关推荐
- C++的成员函数声明与定义 —— 类外定义成员函数以及inline函数
作者原文:https://www.cnblogs.com/wuchanming/p/4061654.html 类的成员函数(简称类函数)是函数的一种,它的用法和作用和前面介绍过的函数基本上是一样的,它 ...
- 函数①函数声明与表达式
函数是JavaScript中的一等对象,这意味着可以把函数像其它值一样传递. 一个常见的用法是把匿名函数作为回调函数传递到异步函数中. 函数声明 function foo() {} 上面的方法会在执行 ...
- JS基础篇--函数声明与定义,作用域,函数声明与表达式的区别
Scoping & Hoisting 例: var a = 1;function foo() {if (!a) {var a = 2;}alert(a); };foo(); 上面这段代码在运行 ...
- js 和jQuery(自动执行函数)立即执行函数和页面加载完后执行函数写法
js 立即执行函数的写法. js 立即执行函数只能用于匿名函数,如果声明了函数名是不可以用立即执行的,通常在函数表达式后加一对小括号()用于立即执行 如果想让函数不被调用的情况下,立即自动执行,需要在 ...
- scala 函数中嵌套函数_Scala函数–声明,定义,调用和嵌套函数
scala 函数中嵌套函数 A function is a set of statements combined together to perform a specific task. The co ...
- 但并不从包含函数声明的接口派生_C++的虚函数和纯虚函数
虚函数:类成员函数前面添加virtual关键字,则该函数被称为虚函数. 纯虚函数:在虚函数的基础上,在函数末尾加上 = 0. class Animal {public: virtual void Sh ...
- c语言 编程 函数声明,C语言编程开发中的函数声明与定义
函数功能的使用在许多编程开发语言中都是有不同的使用方法的,而今天我们就一起来了解一下,在C语言编程开发中的函数功能使用与定义. 对函数的"定义"和"声明"不是一 ...
- ES6的模块化管理、立即执行函数(IIFE):在函数声明后面立即调用、函数劫持
1.Node.js简介: (1)Node是什么: A.浏览器内核有两个引擎:渲染引擎(渲染html.css).JavaScript引擎(运行JavaScript代码) B.Node是独立于浏览器的Ja ...
- 立即执行函数和函数劫持
一.ES6的类的继承 1.继承的好处:在父类中定义的属性和方法,子类继承后就可以直接使用. 2.类继承过程中的向上转型:子类对象的类型一定是父类的类型,父类对象的类型不能是子类的类型 (1)typeo ...
- JavaScript基础之立即执行函数
在JavaScript中有时候看到一些很神奇的函数比如下面截图: 这种函数只要浏览器加载的时候会自动运行,而需要调用,前面在闭包的时候也说过这种函数,一般将其称之为:立即执行函数. 立即函数的特征: ...
最新文章
- ACMNO.50 完美的代价(主要是不同情况下面的讨论)
- [转]FINDSTR正则表达式小结
- python散点图图例只显示一个标记点_python – Matplotlib图例:如何分配多个散点值...
- PKUSC2018训练日程(4.18~5.30)
- 五、python模块以及包
- Android SDK中tools详解
- java 整型 二进制_Java中如何得到一个整型数的二进制形式(十进制转化成二进制)...
- 通达信 移动平均算法_财富趋势,它的产品叫通达信
- unity序列帧动画
- 17-sendto函数和异步错误
- 记一次有惊无险的 JVM 优化经历
- iOS 播放系统自带铃声
- APICloud介绍
- python画xy轴_用python建立两个Y轴的XY曲线图方法
- 8、取得比普通员工 的最高薪水还要高的领导人姓名【bjpowernode34道SQL题】
- 数据链路层 使用广播(一对多)信道 (图文详解)
- C#:Krypton控件使用方法详解(第一讲) —— kryptonButton
- 联想m9870T微型计算机,联想Z5s如何指纹解锁拆微信红包 Lenovo Z5s如何使用红包助手...
- springMVC中 Controller层为什么可以用map来传输数据
- 虚幻四蓝图实战(人物切换汽车控制)