javascript匿名函数实例分析


Posted in Javascript onNovember 18, 2014

本文实例讲述了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程序设计有所帮助。

Javascript 相关文章推荐
JavaScript 编写匿名函数的几种方法
Feb 21 Javascript
jQuery源码分析-01总体架构分析
Nov 14 Javascript
cookie中的path与domain属性详解
Dec 18 Javascript
Jquery图片延迟加载插件jquery.lazyload.js的使用方法
May 21 Javascript
完美兼容各大浏览器的jQuery插件实现图片切换特效
Dec 12 Javascript
谈谈对JavaScript原生拖放的深入理解
Sep 20 Javascript
基于bootstrap实现收缩导航条
Mar 17 Javascript
easyui-edatagrid.js实现回车键结束编辑功能的实例
Apr 12 Javascript
jQuery插件select2利用ajax高效查询大数据列表(可搜索、可分页)
May 19 jQuery
vue2 全局变量的设置方法
Mar 09 Javascript
微信小程序js文件改变参数并在视图上及时更新【推荐】
Jun 11 Javascript
vue打包静态资源后显示空白及static文件路径报错的解决
Sep 02 Javascript
Linux下使用jq友好的打印JSON技巧分享
Nov 18 #Javascript
删除Javascript Object中间的key
Nov 18 #Javascript
如何在MVC应用程序中使用Jquery
Nov 17 #Javascript
Jquery实现仿腾讯微博发表广播
Nov 17 #Javascript
JavaScript数组常用操作技巧汇总
Nov 17 #Javascript
jquery 实现返回顶部功能
Nov 17 #Javascript
超棒的响应式布局jQuery插件Freetile.js
Nov 17 #Javascript
You might like
解析PHP无限级分类方法及代码
2013/06/21 PHP
删除html标签得到纯文本可处理嵌套的标签
2014/04/28 PHP
php微信公众平台开发类实例
2015/04/01 PHP
PHP有序表查找之插值查找算法示例
2018/02/10 PHP
在一个form用一个SUBMIT(或button)分别提交到两个处理表单页面的代码
2007/02/15 Javascript
JavaScript中的prototype使用说明
2010/04/13 Javascript
基于jquery实现的上传图片及图片大小验证、图片预览效果代码
2011/04/12 Javascript
统计jQuery中各字符串出现次数的工具
2012/05/03 Javascript
浅析LigerUi开发中谨慎载入common.css文件
2013/07/09 Javascript
深入理解Javascript里的依赖注入
2014/03/19 Javascript
javascript创建cookie、读取cookie
2016/03/31 Javascript
JavaScript动态生成二维码图片
2016/04/20 Javascript
jQuery包裹节点用法完整示例
2016/09/13 Javascript
通过bootstrap全面学习less
2016/11/09 Javascript
浅谈javascript的url参数parse和build函数
2017/03/04 Javascript
使用vue根据状态添加列表数据和删除列表数据的实例
2018/09/29 Javascript
Python备份Mysql脚本
2008/08/11 Python
python爬虫中url管理器去重操作实例
2020/11/30 Python
实例教程 纯CSS3打造非常炫的加载动画效果
2014/11/05 HTML / CSS
CSS3条纹背景制作的实战攻略
2016/05/31 HTML / CSS
HTML5 实战PHP之Web页面表单设计
2011/10/09 HTML / CSS
Canvas获取视频第一帧缩略图的实现
2020/11/11 HTML / CSS
全球知名的婚恋交友网站:Match.com
2017/01/05 全球购物
丝芙兰意大利官方网站:Sephora.it
2019/12/13 全球购物
好的自荐信包括什么内容
2013/11/07 职场文书
销售行政专员职责
2014/01/03 职场文书
建筑个人求职信范文
2014/01/25 职场文书
办公室人员先进事迹
2014/01/27 职场文书
企业形象策划方案
2014/05/29 职场文书
收银员岗位职责范本
2015/04/07 职场文书
谢师宴学生答谢词
2015/09/30 职场文书
2016党员干部廉政准则学习心得体会
2016/01/20 职场文书
电工生产实习心得体会
2016/01/22 职场文书
《詹天佑》教学反思
2016/02/20 职场文书
涨工资申请书应该怎么写?
2019/07/08 职场文书
OpenCV全景图像拼接的实现示例
2021/06/05 Python