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

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

()先碰到了(),然后碰到function关键字就会自动将()里面的代码识别为函数表达式而不是函数声明

函数声明:function fnName () {…};使用function关键字声明一个函数,再指定一个函数名,叫函数声明。

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

匿名函数:function () {}; 使用function关键字声明一个函数,但未给函数命名,所以叫匿名函数,匿名函数属于函数表达式,匿名函数有很多作用,赋予一个变量则创建函数,赋予一个事件则成为事件处理程序或创建闭包等等。

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

fnName();

function fnName(){

  ...

}

//正常,因为‘提升‘了函数声明,函数调用可在函数声明之前

 

fnName();

var fnName=function(){

  ...

}

//报错,变量fnName还未保存对函数的引用,函数调用必须在函数表达式之后

var fnName=function(){

  alert(‘Hello World‘);

}();

//函数表达式后面加括号,当javascript引擎解析到此处时能立即调用函数

function fnName(){

  alert(‘Hello World‘);

}();

//不会报错,但是javascript引擎只解析函数声明,忽略后面的括号,函数声明不会被调用

function(){

  console.log(‘Hello World‘); 

}();

//语法错误,虽然匿名函数属于函数表达式,但是未进行赋值操作,

//所以javascript引擎将开头的function关键字当做函数声明,报错:要求需要一个函数名

(function(a){

  console.log(a);  //firebug输出123,使用()运算符

})(123);

 

(function(a){

  console.log(a);  //firebug输出1234,使用()运算符

}(1234));

 

!function(a){

  console.log(a);  //firebug输出12345,使用!运算符

}(12345);

 

+function(a){

  console.log(a);  //firebug输出123456,使用+运算符

}(123456);

 

-function(a){

  console.log(a);  //firebug输出1234567,使用-运算符

}(1234567);

 

var fn=function(a){

  console.log(a);  //firebug输出12345678,使用=运算符

}(12345678)

时间: 2024-10-08 20:50:31

函数声明、函数表达式、匿名函数的相关文章

JS执行顺序-函数声明提升、匿名函数、函数表达式

大方向上: JS 是按照 代码块 进行 编译.执行 的. 学习至: 1.变量声明提升 2.新唐的博客 3.js中匿名函数的创建与调用方法分析 4.前端圣经 - 高程三 5.深入理解变量声明提升和函数声明提升 因为没有好好地分类.可能会比较杂.为了系统地学习,先了解几个概念. 一. <script> 区分的代码块. JS是按照代码块 编译 和 执行的.代码块间 相互独立,但是 变量和方法 共享. <script> alert('代码块一'); </script> <

js中函数声明与表达式

//函数声明:function 函数名(){} //函数表达式: function 函数名(可写可不写的)(){}  : 命名函数表达式 匿名函数表达式 //function aaa(){} : 函数声明 //var a = function aaa(){} : 命名函数表达式 //var a = function(){}  : 匿名函数表达式 (function aaa(){}) : 表达式 ~function aaa(){} -function aaa(){} +function aaa()

[二] java8 函数式接口详解 函数接口详解 lambda表达式 匿名函数 方法引用使用含义 函数式接口实例 如何定义函数式接口

函数式接口详细定义 package java.lang; import java.lang.annotation.*; /** * An informative annotation type used to indicate that an interface * type declaration is intended to be a <i>functional interface</i> as * defined by the Java Language Specificat

JavaScript学习总结(三、函数声明和表达式、this、闭包和引用、arguments对象、函数间传递参数)

一.函数声明和表达式 函数声明: function test() {}; test();    //运行正常 function test() {}; 函数表达式: var test = function() {}; test;    //undefined test();   //TypeError var test = function() {}; 命名函数的赋值表达式: var test = function bar() { test();    //正常运行 }; test();    /

javascript 用函数语句和表达式定义函数的区别详解

通常我们会看到以下两种定义函数的方式: // 函数语句 function fn(str) { console.log(str); }; // 表达式定义 var fnx=function(str) { console.log(str+ ' from fnx'); }; 两种方式都创建了新的函数对象, 但函数声明语句的函数名是一个变量名, 变量指向函数对象, 和通过var声明变量一样,函数定义语句中的函数被显示地提前到了脚本或函数的顶部, 因此它们在整个脚本和函数内都是可见的,但是使用var 表达

函数声明与表达式

将脚本编写为函数可避免页面载入时直接执行该脚本 函数中有代码,这些代码只能被事件激活或在函数运行时才会执行 变量声明 函数中声明的变量,叫做局部变量,该变量只能在函数中访问,退出函数后该变量就会被撤销:这意味着我们可以在不同的函数中声明名称相同的变量 函数声明 这种方法会在执行前被解析,它可以存在于该函数运行代码的前后任意位置.代码如下所示 function fun () { ... }; fun(); 或 fun(); function fun () { ... }; 运行结果都为正常 函数赋

lambda表达式匿名函数

匿名函数是一个“内联”语句或表达式,可在需要委托类型的任何地方使用.可以使用匿名函数来初始化命名委托,或传递命名委托(而不是命名委托类型)作为方法参数. C# 中委托的发展 在 C# 1.0 中,您通过使用在代码中其他位置定义的方法显式初始化委托来创建委托的实例.  C# 2.0 引入了匿名方法的概念,作为一种编写可在委托调用中执行的未命名内联语句块的方式.  C# 3.0 引入了 Lambda 表达式,这种表达式与匿名方法的概念类似,但更具表现力并且更简练.  这两个功能统称为“匿名函数”. 

lambda表达式 匿名函数

lambda函数是一种快速定义单行最小函数的方法,是从Lisp借鉴而来的,可以用在任何需要函数的地方. 基础 lambda语句中,冒号前是参数,可以有多个,用逗号分割:冒号右边是返回值. lambda语句构建的是一个函数对象. # 两个参数,x和y,返回两个参数的和 >>> f = lambda x, y: x+y >>> type(f) <type 'function'> >>> f <function <lambda>

python协程函数、递归、匿名函数与内置函数使用、模块与包

目录: 协程函数(yield生成器用法二) 面向过程编程 递归 匿名函数与内置函数的使用 模块 包 常用标准模块之re(正则表达式) 一.协程函数(yield生成器用法二) 1.生成器的语句形式 a.生成器相关python函数.装饰器.迭代器.生成器,我们是如何使用生成器的.一个生成器能暂停执行并返回一个中间的结果这就是 yield 语句的功能 : 返回一个中间值给调用者并暂停执行. 我们的调用方式为yeild 1的方式,此方式又称为生成器的语句形式. 而使用生成器的场景:使用生成器最好的场景就

JS函数 -- 功能,语法,返回值,匿名函数,自调用匿名函数,全局变量与局部变量,arguments的使用

“JavaScript设计得最出色的就是它的函数的实现.” -- <JavaScript语言精粹> 函数包含一组语句,它们是JS的基础模块单元,用于指定对象的行为.一般来说,所谓编程,就是将一组需求分解成一组函数与数据结构的技能. 1.函数的功能 代码重复性使用 模块化编程 2.语法: 使用函数前要先定义才能使用 函数定义有三个部分:函数名,参数列表,函数体 格式: 1 function 函数名([参数1, 参数2, ...]){ 2 3 函数执行部分; 4 5 return 表达式; 6 7