JavaScript 函数用途

在JavaScript中,函数能够:被赋值给一个变量,被赋值为对象的属性、做为参数被传入别的函数、做为函数的结果被返回、用字面量来建立。javascript

1. 赋值给一个变量

//声明一个函数,接受两个参数
function add(x,y){
    return x+y;
}

var a=0;
a=add;//将函数赋值给一个变量
var b=a(2,3);
alert(b);//5

结果:java

分析:赋值以后,变量a引用函数add,即a的值是一个函数对象(一个可执行代码块),因此可使用a(2,3)这样的语句进行求和操做。一般的编程语言中,咱们会将函数/方法的返回值(基本数据类型或者对象)赋值给其余的变量,可是没法作到将函数/方法自己赋值给其余变量。究其缘由,是由于在这些编程语言中,没有一种数据类型表示函数。编程

2. 赋值为对象的属性

var obj={
    id:"obj1";
}
obj.func=add;//赋值为对象的属性
obj.func(2,3);//返回5

实际上,这个和第一个例子本质同样。第一个例子中的a变量,是全局对象window的一个属性,而在第二个例子中则为obj对象。异步

3. 做为参数传递

function adPrint2(str,handler){
   alert(handler(str));
    }
//将字符串转换为大写形式,并返回
function up(str){
return str.toUpperCase();
    }

//将字符串转换为小写形式,并返回
function low(str){
return str.toLowerCase();
    }
adPrint2("hello,world",up);
adPrint2("hello,world",low);

能够看到:函数adPrint2的第二个参数,其实是一个函数(接受一个字符串为参数,并返回参数字符串的大写/小写形式),将这个处理函数做为函数参数传入,在adPrint2的内部,仍然能够调用这个函数。在客户端的JavaScript中,在异步事件的回调函数中更是必须的一种模式(好比:鼠标点击事件,Ajax请求的回调等)编程语言

4. 做为函数的返回值

function currying(){
    return function(){
   alert("curring");
    }
}

1.调用currying()会获得:function(){
alert("curring");
}
2.若是调用currying返回的是这个匿名函数,须要这样:currying()();第一个括号表示操做,表示调用currying自己,返回值是函数;第二个括号操做符调用这个返回值,因此会获得这样的结果:curring;函数

5. 函数用字面量来建立

参考《JavaScript学习指南》P100
咱们可使用String构造器建立关键字符串,而后使用String方法访问它。学习

var str=new String("Learning Java");
document.writeIn(str.replace(/Java/,"javascript"));

也能够基于基本字符串类型使用变量,而且仍然能够访问String对象的方法。当调用String对象的方法时,JavaScript引擎会隐式地将字面量包装在一个对象中。code

var str2="Learning Java";
document.writeIn(str2.replace(/Java/,"javascript"));

实际上能够这样写:document.writeIn("Learning Java".replace(/Java/,"javascript"));
所谓的函数字面量,就是说当想建立一个函数时候,不使用function构造函数,一样能够将其赋给一个变量,这样它在字面量上就成了函数字面量。对象

var func=function (params){
    statements;
    }

函数字面量也称为函数表达式,由于这样建立的函数将称为表达式的一部分,而不是一个特有类型的语句。它们像匿名函数同样没有定义函数名称,不过和匿名函数直接是有差别的。函数字面量只会解析一次,实际上,除了把函数赋给一个变量以外,函数字面量和声明式函数式相似的:blog

var func=function(x,y){
    return x*y;
    }

alert(2,3);
相关文章
相关标签/搜索