函数是由事件驱动的或者当它被调用时可执行的可重复使用的代码块
JavaScript函数语法
函数就是包裹在花括号中的代码块,前面使用了关键词Function:
function functionName() { 这里是要执行的代码 }调用带参数的函数
在调用函数时,可以向其传递值,这些值被称为参数。
这些参数可以在函数中使用。
可以发送任意多的参数,由逗号 (,) 分隔:
myFunction(argument1,argument2)当声明函数时,把参数作为变量来声明:
<script> function demo(name,job) { alert("Welcome "+name+", the"+job) } </script> <input type="button" value="button" onclick="demo('lily','CEO')"> <input type="button" value="button" onclick="demo('Tom','Builder')">带有返回值的函数
函数将值返回调用它的地方,通过使用return语句就可以实现。
在使用return语句时,函数会停止执行,并返回指定的值。
function myFunction() { var x = 5; return x; }函数会返回值5.
注:整个javascript并不会停止执行,仅仅是函数。javascript将继续执行代码,从调用函数的地方。
函数调用将被返回值取代:
var myVar = myFunction();myVar变量的值是5,也就是函数"myFunction()"所返回的值。
即使不把它保存为变量,也可以使用返回值:
document.getElementById("demo").innerHTML=myFunction();"demo"元素的innerHTML将成为5,也就是函数“myFunction()”所返回的值。
可以使返回值基于传递到函数中的参数:
<p id="demo"></p> <script> function myFunction(a,b) { return a*b; } document.getElementById("demo").innerHTML=myFunction(10,23); </script>
如果仅仅希望退出函数时,也可以使用return语句。返回值是可选择的:
function myfunction(a,b) { if(a>b){ return } x = a+b; }
ECMAScript
函数是一组可以随时随地运行的语句,函数是ECMA的核心。
函数声明:关键词function、函数名、一组参数,以及置于括号中的待执行代码。
函数的基本语法:
function functionName(arg0,arg1,...argN){ statement }
例如:
function sayHi(sName,sMessage){ alert("hello"+sName+sMessage); }
函数返回值,不需要像java使用void专门声明,即使函数确实有值,也不必明确声明它。函数只需要使用return运算符跟要返回的值即可。
function diff(iNum1,iNum2){ return iNum1+iNum2; alert(iNum1+iNum2); }
ECMAScript arguments对象
在函数代码中,使用特殊对象arguments,开发者无需明确指出参数名,就能访问它们。
<script> function sayHi(message) { if(arguments[0] == "bye"){ return } alert("message 不是 bye") } sayHi("bdfa"); </script>
arguments 检查参数个数
引用arguments.length
<script> function demo() { console.log(arguments.length); } demo("heoo","sdfs","258"); demo(1,2,5,11) demo(); </script>
模拟函数重载
用arguments对象判断传递给函数的参数个数,即可模拟函数重载:
<script> function demo() { if(arguments.length==1){ console.log(arguments[0]+5); }else if(arguments.length==2){ console.log(arguments[0]+arguments[1]); } } demo(10); demo(11,12); demo(); </script>
ECMAScript 的函数实际上是功能完整的对象
Function对象(类)
ECMAScript 函数是一个功能完整的对象
Function类可以表示开发者定义的任何函数
用Function类直接创建函数语法如下:
var function_name = new function(arg1,arg2,..,argN,function_body)
arg是一个参数,function_body参数是函数主体(要执行的代码)。这些参数必须是字符串
function sayHi(sName,sMessage){ alert("Hello"+sName+","+sMessage); }
可以写成
var sayHi=new Function("sName","sMessage","alert(\"hello\"+sName+sMessage);");
Function对象的length属性
ECMAScript定义的属性length声明了函数期望的参数个数。例如:
function doAdd(iNum) { alert(iNum+10); } function sayHi1() { alert("Hi"); } alert(doAdd.length); alert(sayHi1.length);
function 与 Function的区别
var a = new Function("document.write(a)");
var b= function(){document.write(b)};
function c(){ document.write(c)};
Function是一个类,类似Array,String,Number,Object等的原型
如var arr= new Array();
Function 是一个构造函数,用于动态构建一个函数
function 是关键字,通过function生成的函数实际上是一个Funciton对象的实例。
ECMAScript支持闭包(closure)
闭包,指的是词法表示包括不被计算的变量的函数,也就是说,函数可以使用函数之外定义的变量
var sMessage = "hello world"; function sayHelloWorld() { alert(sMessage); } sayHelloWorld();