博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
javascript函数
阅读量:5023 次
发布时间:2019-06-12

本文共 2628 字,大约阅读时间需要 8 分钟。

一、函数基本概念

  为完成某一功能的程序指令(语句)的集合,称为函数。

二、JavaScript函数的分类

  1、自定义函数(我们自己编写的函数),如:function funName(){}

  2、系统函数(JavaScript自带的函数),如alert函数。

三、函数的调用方式

  1、普通调用:functionName(实际参数...)

  2、通过指向函数的变量去调用:

      var myVar=函数名;

      myVar(实际参数...);

四、函数返回值

  1.当函数无明确返回值时,返回的值就是"undefined"。

  2.当函数有返回值时,返回值是什么就返回什么。

<script type="text/javascript">

var str="window.alert('孤傲苍狼');";
eval(str);//eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码。
/*自定义函数*/
function test(str){
alert(str);
}
window.alert(test);//输出test函数的定义
//函数的调用方式1
test("孤傲苍狼");
//函数的调用方式2
var myFunction=test;
myFunction("白虎神皇");
window.alert(myFunction);
/*当函数无明确返回值时,返回的也是值 "undefined"*/
var retVal=test("test");//test函数执行完之后,并没有返回值,因此retVal变量接收到的返回值结果是undefined
alert("retVal="+retVal);//输出undefined
</script>

五、函数的深入使用

5.1、可变参数

  函数的参数列表可以是任意多个,并且数据类型可以是任意的类型,JavaScript的函数天然支持可变参数,JavaScript有一个arguments变量可以访问所有传到函数内部的参数。

范例:JavaScript使用arguments创建参数可变的函数

1 

 

5.2、javascript创建动态函数

  JavaScript支持创建动态函数,动态函数必须用Function对象来定义(Function是javascript中的一个对象,是固定不变的,规定Function对象的"F"必须大写,当是function的时候,我们知道是定义函数的时候所使用的一个关键字:function funName(x,y),当是Function的时候(F大写的时候),我们知道是javascript中的对象)

  创建动态函数的基本格式:var 变量名 = new Function("参数1","参数2","参数n","执行语句");

  使用new关键字(new是javascript中一个关键字,也是固定的,我们在定义动态函数的时候必须要使用new来创建这个Function对象)

  我们先定义一个变量: var 变量名,在这里,变量名是随便的,然后我们再使用new关键字创建一个Function对象,然后再把这个对象赋值给这个任意的变量,也就是:var 变量名 = new Function("参数1","参数2","参数n","执行语句");Function后面的括号里先是传递给函数的参数,然后用一个逗号(,)隔开然后是这个函数要执行的功能的代码

看下面的一段代码:

1 

  square是动态创建的函数,在Function对象后面的括号里的每一部分内容都必须是字符串形式的,也就是说都必须用引号(""或者是'')括起来,第一部分是传递给这个动态函数的第一个参数“x”,第二部分是传递给这个动态函数的第二个参数“y“,第三部分是这个函数要完成的功能的代码,这个函数要完成的功能是定义一个变量sum,让sum等于传递给这个函数的两个参数x和y的和,然后返回他们相加以后的值(return sum)。

这段代码:

1 var square = new Function ("x","y","var sum ; sum = x+y;return sum;");

和下面这段代码:

1 function square (x,y){2      var sum;3      sum = x+y;4      return sum;5 }

是一摸一样的,只不过一个是动态函数,一个是静态函数。

那下面我们就来想一下,为什么要用动态函数呢,动态函数有什么特殊的地方有什么优点呢?

在静态函数里是:

1 function square (x,y){2       var sum;3       sum = x+y;4       return sum;5 }

而在动态函数里是:

1 new Function ("x","y","var sum ; sum = x+y;return sum;");

5.3、匿名函数

1 var f1 = function(i1, i2) {2      return i1 + i2;3 }4 alert(f1(1,2));

  这种匿名函数的用法在JQuery中的非常多

alert(function(i1, i2) { return i1 + i2; }(10,10));

  直接声明一个匿名函数,立即使用。用匿名函数的好处就是省得定义一个用一次就不用的函数,而且免了命名冲突的问题,js中没有命名空间的概念,因此很容易函数名字冲突,一旦命名冲突以最后声明的为准。

5.4、JavaScript不支持函数的重载

  JavaScript没有方法重载的说法,如果两个方法名字一样,即使参数个数不一样,那么后面定义的就会覆盖前面定义,调用方法时永远是调用后定义的那个。

用如下的代码证明JavaScript不支持函数的重载:

1  

JS引擎调用一个函数时,是根据函数名来调用的,如果有多个函数名相同的函数,那么JS引擎则只认最后定义的那个,调用时以最后定义的那个函数为准!

JS的函数没有专门的函数默认值的语法,但是可以不给参数传值,不传值的参数值就是undefined。

 

转载于:https://www.cnblogs.com/rency/p/9018794.html

你可能感兴趣的文章
csharp:FTP Client Library using FtpWebRequest or Sockets
查看>>
jQuery:SP.NET Autocomplete Textbox Using jQuery, JSON and AJAX
查看>>
css:Media Queries: How to target desktop, tablet and mobile?
查看>>
复杂性研究相关论文
查看>>
大数运算(1)—— 加法篇
查看>>
Swift--错误集:couldn’t be opened because you don’t have permission to view it
查看>>
javascript引擎执行的过程的理解--语法分析和预编译阶段
查看>>
Java_基础—递归
查看>>
Apache+Tomcat构建Tomcat负载均衡集群
查看>>
学会去分享,也许会走得更远
查看>>
redis基本命令
查看>>
inherited 的研究。
查看>>
Hibernate由model类自动同步数据库表结构
查看>>
Android 架构 2.界面
查看>>
SPEL语言-Spring Expression Language
查看>>
设置nginx中文件上传的大小限制度
查看>>
C# 课堂总结3-语句
查看>>
精读《Scheduling in React》
查看>>
[Leetcode] 4Sum
查看>>
java.lang.StackOverflowError 解决方法
查看>>