Javascript函数

 Javascript中有3种建立函数的方法:声明式的/静态的 、动态的/匿名的 、字面量式的。数组

函数的命名规范 浏览器

一般以动词开头,而后跟上一个或多个名词,每一个名词的首字符都是大写字母。ide

 

声明式的函数 函数

function    functionname (param1,  param2,  ....... ,  paramn){ ui

Function statements; spa

} 对象

函数返回值和参数 blog

参数中的变量传给函数的其实是原始值,如一个字符串、一个布尔值、一个数字等。在函数中修改参数值,不会影响实际值。 three

对于传给函数的对象而言传递的则是一个引用。在函数中修改这个对象将会反映在调用程序中。 ip

1

function alterArgs(strLiteral,aryObject){

strLiteral = "override";

aryObject[1] = "2";

aryObject[aryObject.length] = "three";

  }

function testParams(){

var str = "Original Literal";

var ary = new Array("one","two");

document.writeln("string literal is "+ str + "<br />");

document.writeln("Array object is "+ ary +"<br /><br />");

alterArgs(str,ary);

document.writeln("string literal is "+ str + "<br />");

document.writeln("Array object is "+ ary +"<br /><br />");

}

浏览器输出为:

string literal is Original Literal
Array object is one,two

string literal is Original Literal
Array object is one,2,three

匿名函数

函数就是一个对象。所以,能够像建立字符串、数组那样经过一个构造器建立它们,并将该函数赋给一个变量。匿名函数自己并非直接声明的,也没有对其进行命名。

Javascript解析它时,和声明式函数不同,它将动态建立一个匿名函数;当其被调用后,该函数就将被自动删除。若是该函数在一个循环中使用,那么每次循环将建立一次函数,而声明式只会被建立一次。动态函数对于定义一个在运行时才能肯定需求的函数而言是一个很好的方法。

1

var sayHi = new Function("toWhom","alert('Hi' + toWhom);");

sayHi("World!");

 

使用函数构造器建立一个匿名函数的语法格式:

var  variable = new Function(param1,param2,........,paramn,functionbody);

2:

function buildFunction(){

var func = prompt("Enter function body:");

var x = prompt("Enter value of x:");

var y = prompt("Enter value of y:");

var op = new Function("x","y",func);

var theAnswer = op(x,y);

alert("Function is: "+func);

alert("x is: "+ x + " y is: "+ y);

alert("The answer is: "+ theAnswer);

}

这个例子将匿名函数的动态性发挥到了极致。

浏览器显示:

 

函数字面量

也称为函数表达式,由于这样建立的函数将称为表达式的一部分,而不是一个特有类型的语句。

就是建立一个函数能够不使用函数构造器,一样也能够将其赋给一个变量;这样的字面量就构成了函数的字面量。

语法格式:

var  func  =  function (params) {

statements;

}

它也没有函数名,和匿名函数的区别是,函数字面量只会被解析一次。

当想实现如把一个函数做为另外一个函数的参数之类的扩展时,函数字面量的特点就会显示出来,看下面的例子。

3

function funcObject(x,y,z){

alert(z(x,y));

}

function testFunction(){

funcObject(3,4,function(x,y) {return x * y});//第三个参数是一个函数

}

执行结果是弹出一个显示“12”的alert对话框。

相关文章
相关标签/搜索