简单分析javascript中的函数

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

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

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

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

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

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

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

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

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

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

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

(3)回调函数

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

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

(4)内部函数

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

(三)函数的优点

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

(四)注意事项 

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

(五)函数的变量域

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

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

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

(0)

相关推荐

  • js 格式化时间日期函数小结

    复制代码 代码如下: Date.prototype.format = function(format){ var o = { "M+" : this.getMonth()+1, //month "d+" : this.getDate(), //day "h+" : this.getHours(), //hour "m+" : this.getMinutes(), //minute "s+" : this.g

  • js中通过split函数分割字符串成数组小例子

    复制代码 代码如下: <script language="javascript"> str="2,2,3,5,6,6"; //这是一字符串 var strs= new Array(); //定义一数组 strs=str.split(","); //字符分割 for (i=0;i<strs.length ;i++ ) { document.write(strs[i]+"<br/>"); //分割后的

  • js 小数取整的函数

    1.丢弃小数部分,保留整数部分 js:parseInt(7/2) 2.向上取整,有小数就整数部分加1 js: Math.ceil(7/2) 3,四舍五入. js: Math.round(7/2) 4,向下取整 js: Math.floor(7/2)

  • Javascript Math ceil()、floor()、round()三个函数的区别

    下面来介绍将小数值舍入为整数的几个方法:Math.ceil().Math.floor()和Math.round(). 这三个方法分别遵循下列舍入规则: ◎Math.ceil()执行向上舍入,即它总是将数值向上舍入为最接近的整数: ◎Math.floor()执行向下舍入,即它总是将数值向下舍入为最接近的整数: ◎Math.round()执行标准舍入,即它总是将数值四舍五入为最接近的整数(这也是我们在数学课上学到的舍入规则). 下面是使用这些方法的示例: alert(Math.ceil(25.9))

  • js中匿名函数的N种写法

    匿名函数没有实际名字,也没有指针,怎么执行滴? 其实大家可以看看小括号的意义就应该可以理解.小括号有返回值,也就是小括号内的函数或者表达式的返回值,所以说小括号内的function返回值等于小括号的返回值,不难理解 (function(){})()可以将没有名字的函数执行了把- 关于匿名函数写法,很发散~ 最常见的用法: 复制代码 代码如下: (function() { alert('water'); })(); 当然也可以带参数: 复制代码 代码如下: (function(o) { alert

  • js function定义函数使用心得

    1.最基本的作为一个本本分分的函数声明使用. 复制代码 代码如下: function func(){} 或 var func=function(){}; 2.作为一个类构造器使用: 复制代码 代码如下: function class(){} class.prototype={}; var item=new class(); 3.作为闭包使用: 复制代码 代码如下: (function(){ //独立作用域 })(); 4.可以作为选择器使用: 复制代码 代码如下: var addEvent=ne

  • javascript 手机号码正则表达式验证函数 原创

    复制代码 代码如下: function checkMobile(){     var sMobile = document.mobileform.mobile.value     if(!(/^1[3|4|5|8][0-9]\d{4,8}$/.test(sMobile))){         alert("不是完整的11位手机号或者正确的手机号前七位");         document.mobileform.mobile.focus();         return false;

  • js中字符替换函数String.replace()使用技巧

    定义和用法 replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串. 语法 stringObject.replace(regexp/substr,replacement)参数 描述 regexp/substr 必需.规定子字符串或要替换的模式的 RegExp 对象. 请注意,如果该值是一个字符串,则将它作为要检索的直接量文本模式,而不是首先被转换为 RegExp 对象.   replacement 必需.一个字符串值.规定了替换文本或生成替换文本的函数.

  • js 字符串操作函数

    concat() – 将两个或多个字符的文本组合起来,返回一个新的字符串. indexOf() – 返回字符串中一个子串第一处出现的索引.如果没有匹配项,返回 -1 . charAt() – 返回指定位置的字符. lastIndexOf() – 返回字符串中一个子串最后一处出现的索引,如果没有匹配项,返回 -1 . match() – 检查一个字符串是否匹配一个正则表达式. substring() – 返回字符串的一个子串.传入参数是起始位置和结束位置. replace() – 用来查找匹配一个

  • js正则函数match、exec、test、search、replace、split使用介绍集合

    match 方法 使用正则表达式模式对字符串执行查找,并将包含查找的结果作为数组返回. stringObj.match(rgExp) 参数 stringObj 必选项.对其进行查找的 String 对象或字符串文字. rgExp 必选项.为包含正则表达式模式和可用标志的正则表达式对象.也可以是包含正则表达式模式和可用标志的变量名或字符串文字. 其余说明与exec一样,不同的是如果match的表达式匹配了全局标记g将出现所有匹配项,而不用循环,但所有匹配中不会包含子匹配项. 例子1: functi

随机推荐