JavaScript 脚本语言允许开发者通过编写函数的方式组合一些可重复使用的脚本代码块,增加了脚本代码的结构化和模块化。函数是通过参数接口进行数据传递,以实现特定的功能。本小节将重点介绍函数的基本概念、组成、全局函数与局部函数、作为对象的函数以及递归函数等知识,让读者从头开始,学习如何编写执行效率高、代码利用率高,且易于查看和维护的函数。

2.9.1 函数的基本组成

函数由函数定义和函数调用两部分组成,应首先定义函数,然后再进行调用,以养成良好的编程习惯。
函数的定义应使用关键字 function,其语法规则如下:

function funcName ([parameters])
{
statements;
[return 表达式;]
}

函数的各部分含义如下:
       ? funcName 为函数名,函数名可由开发者自行定义,与变量的命名规则基本相同;
       ? parameters 为函数的参数,在调用目标函数时,需将实际数据传递给参数列表以完成函数特定的功能。参数列中可定义一个或多个参数,各参数之间加逗号“,”分隔开来,当然,参数列表也可为空;
       ? statements 是函数体,规定了函数的功能,本质上相当于一个脚本程序;
       ? return 指定函数的返回值,为可选参数。

自定义函数一般放置在 HTML 文档的<head>和</head>标记对之间。除了自定义函数外,JavaScript 脚本语言提供大量的内建函数,无需开发者定义即可直接调用,例如window 对象的alert()方法即为JavaScript 脚本语言支持的内建函数。
          函数定义过程结束后,可在文档中任意位置调用该函数。引用目标函数时,只需在函数名后加上小括号即可。若目标函数需引入参数,则需在小括号内添加传递参数。如果函数有返回值,可将最终结果赋值给一个自定义的变量并用关键字return 返回。

考察如下测试代码:
//源程序2.18
<! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"
"http://www.w3.org/TR/REC-html140/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>Sample Page!</title>
<script language="JavaScript" type="text/javascript">
<!--
var msg="\n 函数调用实例 : \n\n";
//响应按钮的onclick 事件处理程序
function Test()
{
var i=10;
var j=15;
var temp=sum(i,j);
msg+="函数参数 : \n";
msg+="参数1: i="+i+"\n";
msg+="参数2: j="+j+"\n";
msg+="调用语句 : \n";
msg+="var temp=sum(i,j); \n";
msg+="返回结果 : \n";
msg+=""+i+"+"+j+" = "+temp+"\n";
alert(msg);
}
//计算两个数的加和
function sum(data1,data2)
{
var tempData=data1+data2;
return tempData;
}
-->
</script>
</head>
<body>
<center>
<form>
<input type=button value="测试" οnclick="Test()">
</form>
</center>
</body>
</html>

程序运行后,在原始页面单击“测试”按钮,弹出警告框如图2.30 所示。

图 2.30 函数调用

上述代码中,定义了实现两数加和的函数 sum(data1,data2)及响应“测试”按钮onclick事件处理程序的Test()函数,并在后者内部调用了window 对象的内建函数alert(),实现了函数的相互引用。
        
        如果函数中引用的外部函数较多或函数的功能很复杂,势必导致函数代码过长而降低脚本代码可读性,违反了开发者使用函数实现特定功能的初衷。因此,在编写函数时,应尽量保持函数功能的单一性,使脚本代码结构清晰、简单易懂。

原文链接:http://www.skyasp.net/news/?156.html

转载于:https://www.cnblogs.com/firesky/archive/2011/08/19/2145988.html

函数-函数的基本组成相关推荐

  1. jquery jQuery的入口函数 $函数 dom对象和jquery对象

    文章目录 jquery jQuery的入口函数 $函数 dom对象和jquery对象 jQuery的入口函数 视频 代码 $函数 视频 代码 dom对象和jquery对象 视频 代码 jquery j ...

  2. python在匿名函数作和_跟光磊学Python开发-匿名函数函数和高阶函数

    跟光磊学Python开发-匿名函数函数和高阶函数 跟光磊学Python开发-匿名函数函数和高阶函数跟光磊学Python开发 匿名函数 匿名函数就是函数定义时没有名字的函数,也称为匿名表达式. 普通函数 ...

  3. 函数函数sigaction、signal

    函数函数sigaction 1. 函数sigaction原型: int sigaction(int signum, const struct sigaction *act, struct sigact ...

  4. 浅析MATLAB中的内联函数、匿名函数和函数函数

    内联函数 内联(inline)函数是MATLAB 7以前经常使用的一种构造函数对象的方法.在命令窗口.程序或函数中创建局部函数时,通过使用inline构造函数,而不用将其储存为一个M文件,同时又可以像 ...

  5. python函数-函数进阶

    python函数-函数进阶 一.命名空间和作用域 1.命名空间 内置命名空间 -- python解释器 就是python解释器一启动就可以使用的名字存储在内置命名空间中 内置的名字在启动解释器的时候被 ...

  6. day20 Python 高阶函数,函数,嵌套,闭包 装饰器

    高阶函数定义 1.函数接收的参数是一个函数名 2.函数的返回值是一个函数名 3.满足上述条件任意一个都可以称之为高阶函数 一.函数的接收参数是一个函数名 import time def foo():t ...

  7. 【C/C++】一个实例看 回调函数 / 函数指针 应用与原理

    前言:笔者在学习数据结构经典问题"四种方法求解最大子列和"时,遇到了一个需求:计时是重复动作,因此想创建一个可以为算法运行时间计时的函数.由于计时的特殊性(被计时的函数要被掐头又掐 ...

  8. matlab 中的内联函数、匿名函数和函数函数

    内联函数 >> f = inline('x^2 + y^3') f =内联函数:f(x,y) = x^2+y^3 >> f(2, 3) 31 其实 inline('x^2+y^ ...

  9. 写一函数,实现两个字符串的比较。即自己写一个strcmp函数,函数原型为int strcmp(char * p1 ,char * p2); 设p1指向字符串s1, p2指向字符串s2。要求当s1=s2

    写一函数,实现两个字符串的比较.即自己写一个strcmp函数,函数原型为int strcmp(char * p1 ,char * p2); 设p1指向字符串s1, p2指向字符串s2.要求当s1=s2 ...

  10. Dart —— 函数 函数参数 匿名函数

    Dart汇总请点击这里 函数 文章目录 函数 可选参数 命名可选参数 位置可选参数 默认参数值 main() 函数 函数是一等对象 匿名函数 返回值 Dart 是一门真正面向对象的语言, 甚至其中的函 ...

最新文章

  1. 5 个最受人喜爱的开源 Django 包
  2. linux CentOS7 磁盘分区fdisk 、df 、du、parted 命令实例
  3. 中国科学院计算机网络信息中心怀柔分中心,计算机网络信息中心怀柔分中心(二期)建设项目荣获2018年度“北京市安装工程优质奖”...
  4. aop源码分析之 —— 创建代理对象
  5. 史上最全MySQL锁机制
  6. 实验十一 团队作业7:团队项目设计完善编码
  7. Spring 的学习
  8. KITTI激光雷达点云解析与图像反投影
  9. 我终于会加载模块了 值得纪念!
  10. C语言的那些小秘密之【内存分配】
  11. protel99SE - 多张原理图生成一张总网表的方法
  12. 品铂平板电脑刷linux,细说平板电脑刷机方法
  13. 计算机课flash课件,初识flash动画教学课件
  14. swustoj堆排序算法(1015)
  15. 菜哥学知识图谱(通过“基于医疗知识图谱的问答系统”)(三)(代码分析)
  16. 域名链接到服务器指定端口
  17. 1.认识华为数据通信
  18. Ubuntu 21 .1安装wps office 2019并解决字体缺失问题教程
  19. Java初学者一定要注意的问题,这些错误你犯过哪些?永远不要停止学习。
  20. 新学期,新FLAG | 尽人事,听天命,守得云开见月明

热门文章

  1. java.nio.file.FileSystemException: xxx: Too many open files
  2. 声学测试软件手机版_告别手机转接器,小米双单元Type-C版耳机体验
  3. cpp 一个文件分成两个文件写_为ORB-SLAM2写一个launch文件
  4. python安装失败0x80070570_固态硬盘装win7出现错误代码0x80070570怎么办
  5. Pytorch详解NLLLoss和CrossEntropyLoss、以及softmax和log_softmax
  6. YARN执行作业报错Exceeded MAX_FAILED_UNIQUE_FETCHES; bailing-out.
  7. 钱穆的中学读书事(作者王国华)
  8. 从零开始学习docker(十四)Docker Compose--build
  9. 罕见!百度、微博、拼多多、B站等全国34家互联网巨头集体表态
  10. 肝!打造一款高逼格的Vim神器