Board logo

标题: JavaScript 函数定义方式(1) [打印本页]

作者: look_w    时间: 2018-11-2 16:02     标题: JavaScript 函数定义方式(1)

函数的定义通俗的来讲,函数是由事件驱动的或者当它被调用时执行的可重复使用的代码快。它是 JavaScript 语言一个即重要又复杂的组成部分,任何一个 JavaScript 框架,如    Dojo、jQuery 等都是有成百上千个函数组成的。函数的使用不仅提高了代码本身的可读性,也为它的扩展提供了可能,同时还降低了维护成本,加快 web 项目的开放进度;尤其是在多人参与的敏捷开发中。
通常函数的定义是通过 function 语句实现的:
清单 1.函数定义
1
2
3
function funcname([arg1[,arg2……]]){
  statements
}




funcname 是要定义的函数名,是一个标识符,而不是字符串或者表达式;紧跟函数名后面的是用括号括起来的参数列表,参数之间用逗号隔开;最后,也是这个函数的核心部分:函数体,它是由一行或者多行代码组成并且是用大括号括起来的。
函数定义描述的是一个静态的程序结构,当 JavaScript    解析器遇到一个函数定义时,它就被解析并存储构成函数体的语句,然后定义一个和该函数名同名的全局或者某个对象属性来保存。当该函数被调用时,里面的函数体才真正的被执行。如:
清单 2
1
2
3
4
5
alert(typeof f)//显示 function,而不是 undefined
function f(x,y){
  alert(x+y);
}
f(2, 3) //显示 5




函数定义方式之 Function()构造函数定义一个函数,最为普遍的是直接使用 function 关键字来定义,又称函数声明式(function declaration),如上面定义的 f 函数,但是 function    语句并非是定义函数的惟一方法。在 ECMAScript v1 和 JavaScript v1.1 中,还可以使用 Function () 构造函数和 new 运算符动态地定义函数,如下:
1
var myfunc = new Function ('x', 'y', 'alert(x+y)');




这行代码创建了一个新函数,该函数和下面使用 function 方法定义的函数是等价的:
清单 3.
1
2
3
function myfunction(x, y){
  alert(x+y);
}




Function () 定义中,前面两个是参数,参数可以是任意多个字符串;第三个是函数体,可以包含任何 JavaScript 语句,语句之间用分号隔开。如果没有参数,传一个函数体即可。由于传递给 Function () 函数中,没有一个字符串是用来声明函数名的,所以它是一个匿名函数。
使用 Function()构造函数来定义函数允许我们动态的来定义和编译一个函数,而不是限定在 function 预编译的函数体中。但同时也会带来负面影响,因为每次调用这个函数都要对它进行编译,对性能有一定的影响,尤其是在循环体中。




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0