简单分析javascript中的函数


Posted in Javascript onSeptember 10, 2016

在脚本语言JavaScript中,函数的定义是由事件驱动或者当它被调用时可重复使用的代码块。在JavaScript的标准ECMAscript中,把函数表述为可以随时随地运行的语句。我个人是不认同ECMA的说法的,因为函数只有在发生调用的时候才会执行,否则就是一段毫无生气的代码。

我们来具体认识认识函数。

(一)首先是函数的定义: 在ECMAscript函数的定义是 关键字function 函数名( 参数){主体;return(返回值)};这四部分组成的,但是在脚本语言中函数的定义却分为三种方式定义:

形式1:function 函数名(参数){主体;返回值};这种定义的方式和ECMAscript的方式一样;
形式2:var 函数名=function (参数){主体;返回值};
形式3:var 函数名=new Function (参数){主体;返回值};

在Javascript中只有这三种定义函数的方式,接下来说说每一种定义方式的使用的注意事项和具体的用法:第一种定义方式是最简单,最容易理解的,他就是简简单单的为我们定义一个函数,供我们在接下来的编程中使用;第二中方式是通过我们构造一个匿名函数,并且把这个匿名函数的传递给一个我们定义的函数变量来实现的,他在闭包中是很常见的,为的是使在全局域内,我们能使用内层函数,让我们的函数形成闭包结构。第三种方式是通过new出一个新的内存空间存放我们的匿名函数,并赋值与我们定义的函数名,这个函数是基于我们的匿名函数创建的。这种方式主要应用在原型里面。

其实通过观察,我们会发现,好像这三种定义方式之间联系很紧密,感觉第三种第一方式好像是前面2种和第三种的组合使用,实事也是你看到的这样,所以对于这3种定义方式我们知道就行了,知道他们分别什么时候使用就好了。再有,我要说的是这三种定义方式的数据类型,是基于基本类型来说的,和基于对象类型的数据是一样的,在基于对象数据类型里,我们把函数称为对象。当你接触了对象的定义时,很明显的发现,他们的定义方式基本上是一样的。只不过函数名给称为对象,定义的形式是很类似的。记住一点,对象就是函数,函数就是对象。

(二)几种特殊的函数
(1) 匿名函数
所谓的匿名函数,就是没有函数名的函数。这种函数的有点就是说,它的调用很难,这也就保证了安全性。那么我们应该如何调用匿名函数呢?来看个例子:

简单分析javascript中的函数

通过把匿名函数作为参数传递给add变量,我们就可以调用我们的匿名函数了。

(2)自调函数
自调函数也是匿名函数的一种,它没有作为参数传递给其他变量,也没有自己的函数名,也就是说它不能被别人调用,只能自己调用自己。

简单分析javascript中的函数

图中写的方式就是自调函数的使用,这个函数被两个小括号包围着,第一个小括号的作用是封装,把我们编写的匿名函数封装在其中,第二个小括号就是调用了,我们还可以给他初始化,就像第二个自调函数的写法一样。  

其实自调函数主要用于实现一次性的功能,就是说在执行周期内只运行一次,所以在我们进行网页的初始化时,可以考虑使用自调函数。

(3)回调函数

回调函数,就是把自身作为返回值或者实参传递的这样的函数。

简单分析javascript中的函数

函数a()和b()就是回调函数的应用。

(4)内部函数

这个就是一句话了,就是存在于函数内部的一类函数。

(三)函数的优点

1.大量重复的语句写在函数里面,可以重复的调用;
2.简化编程语言,让编程变得模块化;
3.优化代码结构;

(四)注意事项 

1.函数的书写时,可以先调用,在书写;因为JavaScript在程序开始时,会对我们所有的函数和变量进行隐式的声明;
2.函数不会自己执行,只有在发生函数调用时,才会分配空间,才能使用;
3.函数名相同时,默认执行写在下面的函数;
 4.函数名若有一个单词构成,则首字母小写,若有多个单词构成,第一个单词后其他单词首字母大写;

(五)函数的变量域

1.全局变量
写在全局域的变量称为全局变量;
2.局部变量
定义在函数内部,并用var 声明的变量称为局部变量;如果定义在函数内部,但未用var 声明,则看做是全局变量。

我们要清楚的知道,学习JavaScript语言就是学习各种各样的函数,所以对于函数的理解一定深刻一些,不然在以后的学习过程中,我们会遇到各种函数的嵌套啊,什么的各种函数糅杂在一起,就会更加的理不清头绪,整的自己那袋混乱的。这篇简简单单的文章,是我对函数的一些理解,希望我的这些浅见,能对你理解函数有一些帮助。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Maps Javascript
Jan 22 Javascript
让AJAX不依赖后端接口实现方案
Dec 03 Javascript
bootstrap table 服务器端分页例子分享
Feb 10 Javascript
Node.js 学习笔记之简介、安装及配置
Mar 03 Javascript
基于JS实现发送短信验证码后的倒计时功能(无视页面刷新,页面关闭不进行倒计时功能)
Sep 02 Javascript
AngularJS中的JSONP实例解析
Dec 01 Javascript
解决Vue.js父组件$on无法监听子组件$emit触发事件的问题
Sep 12 Javascript
教你如何编写Vue.js的单元测试的方法
Oct 17 Javascript
vue动态绑定class的几种常用方式小结
May 21 Javascript
Vue组件之高德地图地址选择功能的实例代码
Jun 21 Javascript
Vue实现商品飞入购物车效果(电商项目)
Nov 26 Javascript
Vue如何使用混合Mixins和插件开发详解
Feb 05 Javascript
javascript数组常用方法汇总
Sep 10 #Javascript
JavaScript实现输入框与清空按钮联动效果
Sep 09 #Javascript
Three.js快速入门教程
Sep 09 #Javascript
jQuery动态修改字体大小的方法【测试可用】
Sep 09 #Javascript
Bootstrap菜单按钮及导航实例解析
Sep 09 #Javascript
JavaScript设计模式之单体模式全面解析
Sep 09 #Javascript
jQuery实现的超链接提示效果示例【附demo源码下载】
Sep 09 #Javascript
You might like
PHP小技巧搜集,每个PHPer都来露一手
2007/01/02 PHP
用PHP 快速生成 Flash 动画的方法
2007/03/06 PHP
php数组函数序列之in_array() - 查找数组中是否存在指定值
2011/11/07 PHP
详解php的魔术方法__get()和__set()使用介绍
2012/09/19 PHP
PHP中模拟处理HTTP PUT请求的例子
2014/07/22 PHP
php使用Jpgraph绘制饼状图的方法
2015/06/10 PHP
PHPExcel在linux环境下导出报500错误的解决方法
2017/01/26 PHP
使用PHPMailer发送邮件实例
2017/02/15 PHP
PHP的PDO预定义常量讲解
2019/01/24 PHP
TP5框架model常见操作示例小结【增删改查、聚合、时间戳、软删除等】
2020/04/05 PHP
CL vs ForZe BO5 第三场 2.13
2021/03/10 DOTA
js delete 用法(删除对象属性及变量)
2014/08/24 Javascript
jQuery实现个性翻牌效果导航菜单的方法
2015/03/09 Javascript
jQuery简单实现仿京东分类导航层效果
2016/06/07 Javascript
Koa从零搭建到Api实现项目的搭建方法
2019/07/30 Javascript
javascript 使用sleep函数的常见方法详解
2020/04/26 Javascript
python中解析json格式文件的方法示例
2017/05/03 Python
Python3.遍历某文件夹提取特定文件名的实例
2018/04/26 Python
python实现坦克大战游戏 附详细注释
2020/03/27 Python
python opencv 简单阈值算法的实现
2019/08/04 Python
python爬虫 基于requests模块发起ajax的get请求实现解析
2019/08/20 Python
Django框架model模型对象验证实现方法分析
2019/10/02 Python
Python标准库shutil模块使用方法解析
2020/03/10 Python
如何解决安装python3.6.1失败
2020/07/01 Python
python接口自动化之ConfigParser配置文件的使用详解
2020/08/03 Python
详解CSS3的opacity属性设置透明效果的用法
2016/05/09 HTML / CSS
HTML5 transform三维立方体实现360无死角三维旋转效果
2014/08/22 HTML / CSS
Woolworth官网:澳洲第一大超市
2017/06/25 全球购物
文明礼仪标语
2014/06/13 职场文书
关于教师节的演讲稿
2014/09/04 职场文书
检察院对照“四风”认真查找问题落实整改措施
2014/09/26 职场文书
投资公司董事长岗位职责
2015/04/16 职场文书
python 爬取京东指定商品评论并进行情感分析
2021/05/27 Python
如何使用SQL Server语句创建表
2022/04/12 SQL Server
Django中celery的使用项目实例
2022/07/07 Python
centos环境下nginx高可用集群的搭建指南
2022/07/23 Servers