首页 web前端 js教程 javascript匿名函数实例分析_javascript技巧

javascript匿名函数实例分析_javascript技巧

May 16, 2016 pm 04:30 PM
javascript 匿名函数

本文实例讲述了javascript匿名函数的用法。分享给大家供大家参考。具体分析如下:

摘要:

本文讲解的是javascript最基础也是最重要的东西--函数,之所以写这篇文章,是因为面试的时候问到了,也算是温故而知新了。

先上个例子,如果你看懂了,说明你已经理解了本文要讲的。

复制代码 代码如下:
var f = (function() {

    function f() {return 10;}

    return f();

    function f() {return 20;}

    var f = 30;

})();

console.log(f);

javascript高级程序设计中这样描述函数--可以封装任意多条语句,而且可以在任何地方、任何时候调用执行。之前介绍过了strict mode,严格模式对函数有一些限制:

① 不能把函数命名为eval或arguments
② 不能把参数命名为eval或arguments
③ 不能出现两个命名参数同名的情况

发生以上情况就会导致语法错误,代码无法执行。

函数定义

函数定义分为三种

1、构造函数

复制代码 代码如下:
var fun = new Funciton();

2、普通定义

复制代码 代码如下:
function fun() {}

3、函数式定义

复制代码 代码如下:
var fun = function() {};

这三种方式都可以定义函数fun。

参数

函数不介意传递进来多少个参数,也不在乎传进来的参数是什么数据类型。即便你定义的函数只接收两个参数,在调用这个函数时也未必一定要传递两个参数。可以传递一个、三个甚至不传递参数。原因是参数在内部是用一个数组来表示的。在函数体内可以通过arguments对象来访问参数数组,举个例子

复制代码 代码如下:
function sayHi() {

    alert("Hello " + arguments[0] + "," + arguments[1]);

}

通过访问arguments对象的length属性来获知有多少个参数。函数的length会返回函数的参数个数。

注意:所有参数传递的都是值,不可能通过引用传递参数。

函数不能重载,只能重写

如果定义了两个名字相同的函数,则该名字只属于最后定义的函数,举个例子:

复制代码 代码如下:

function add(num) {

    return num + 100;

}

function add(num) {

    return num + 200;

}

var result = add(100) //300

注意:函数在执行完return语句之后停止并立即退出。

函数种类

函数分为两种一种是有名函数,另一种是匿名函数。例如下面的有名函数

复制代码 代码如下:
function fun() {

}

如果调用的话,只需要fun()就可以。

匿名函数,顾名思义就是没有函数名。例如

function() {}

函数调用是通过函数名来调用,匿名函数怎么调用呢?一种就是将匿名函数赋给一个变量,让这个变量充当函数名。另一种就是用()来调用,例如下面三种方法

1、(function() {return;}());

2、(function() {return;})();

3、function() {return;}();

例子:

复制代码 代码如下:

(function(x, y) {

    ​alert(x + y);

})(2,3);

//alert(5)


2和3将会作为参数传递给x和y

下面就来讲讲最上面的例子,这个例子里面涉及到闭包,后面会说

首先定义一个变量f,然后赋值一个匿名函数,这里呢需要注意一点函数里所有变量的定义都会被前置,所以匿名函数里的执行顺序是

复制代码 代码如下:

var f = (function() {

    ​var f = 30;

    function f() {return 10;}

    function f() {return 20;}

    return f();

})();


外面的变量f和里面的变量f不在同一个作用域内(闭包),所以互不影响。​因为函数不能重载,所以外面变量f=(function f() {return 20;})();,所以最终输出的是20。

希望本文所述对大家的javascript程序设计有所帮助。

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
4 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

C++ 匿名函数的用法和特点 C++ 匿名函数的用法和特点 Apr 19, 2024 am 09:03 AM

匿名函数,又称lambda表达式,是一种不指定名称的函数,用于一次性使用或传递函数指针。特点有:匿名性、一次性使用、闭包、返回类型推断。实战中常用于排序或其他一次性函数调用。

简易JavaScript教程:获取HTTP状态码的方法 简易JavaScript教程:获取HTTP状态码的方法 Jan 05, 2024 pm 06:08 PM

JavaScript教程:如何获取HTTP状态码,需要具体代码示例前言:在Web开发中,经常会涉及到与服务器进行数据交互的场景。在与服务器进行通信时,我们经常需要获取返回的HTTP状态码来判断操作是否成功,根据不同的状态码来进行相应的处理。本篇文章将教你如何使用JavaScript获取HTTP状态码,并提供一些实用的代码示例。使用XMLHttpRequest

Python Lambda表达式:缩写,简洁,强大 Python Lambda表达式:缩写,简洁,强大 Feb 19, 2024 pm 08:10 PM

pythonLambda表达式是一个强大且灵活的工具,可用于创建简洁、可读且易于使用的代码。它们非常适合快速创建匿名函数,这些函数可以作为参数传递给其他函数或存储在变量中。Lambda表达式的基本语法如下:lambdaarguments:expression例如,以下Lambda表达式将两个数字相加:lambdax,y:x+y这个Lambda表达式可以传递给另一个函数作为参数,如下所示:defsum(x,y):returnx+yresult=sum(lambdax,y:x+y,1,2)在这个例子

如何在JavaScript中获取HTTP状态码的简单方法 如何在JavaScript中获取HTTP状态码的简单方法 Jan 05, 2024 pm 01:37 PM

JavaScript中的HTTP状态码获取方法简介:在进行前端开发中,我们常常需要处理与后端接口的交互,而HTTP状态码就是其中非常重要的一部分。了解和获取HTTP状态码有助于我们更好地处理接口返回的数据。本文将介绍使用JavaScript获取HTTP状态码的方法,并提供具体代码示例。一、什么是HTTP状态码HTTP状态码是指当浏览器向服务器发起请求时,服务

Golang 匿名函数可以返回多个值吗? Golang 匿名函数可以返回多个值吗? Apr 13, 2024 pm 04:09 PM

是的,Go语言中的匿名函数可以返回多个值。语法:func(arg1,arg2,...,argN)(ret1,ret2,...,retM){//函数体}。使用方法:使用:=操作符接收返回值;使用return关键字返回多个值。

Python Lambda表达式:让编程变得更轻松 Python Lambda表达式:让编程变得更轻松 Feb 19, 2024 pm 09:54 PM

pythonLambda表达式是一个小的匿名函数,它可以将一个表达式存储在变量中并返回它的值。Lambda表达式通常用于执行简单的任务,这些任务可以通过编写一个单独的函数来完成,但Lambda表达式可以使代码更简洁和易读。Lambda表达式的语法如下:lambdaarguments:expressionarguments是Lambda表达式接收的参数列表,expression是Lambda表达式的体,它包含需要执行的代码。例如,以下Lambda表达式将两个数字相加并返回它们的和:lambdax,

golang函数中的匿名函数是如何实现的? golang函数中的匿名函数是如何实现的? Jun 03, 2024 pm 07:09 PM

Go中函数中的匿名函数允许在函数体内创建一次性函数,而无需显式声明它们。它们通过使用func关键字和省略函数名来定义。通过闭包实现,闭包包含函数体代码以及对包含匿名函数的函数中所有局部变量的引用。例如,在sort.Slice函数中使用匿名函数可以对一个整数切片进行排序。

Python Lambda表达式:揭秘匿名函数的强大奥秘 Python Lambda表达式:揭秘匿名函数的强大奥秘 Feb 24, 2024 am 09:01 AM

python中的Lambda表达式是匿名函数的另一种语法形式。它是一个小型匿名函数,可以在程序中任何地方定义。Lambda表达式由一个参数列表和一个表达式组成,表达式可以是任何有效的Python表达式。Lambda表达式的语法如下:lambdaargument_list:expression例如,下面的Lambda表达式返回两个数字的和:lambdax,y:x+y这个Lambda表达式可以传递给其他函数,例如map()函数:numbers=[1,2,3,4,5]result=map(lambda

See all articles