JavaScript 函数用途
2015-06-05 10:43
399 查看
在JavaScript中,函数可以:被赋值给一个变量,被赋值为对象的属性、作为参数被传入别的函数、作为函数的结果被返回、用字面量来创建。
结果:
分析:赋值之后,变量a引用函数add,即a的值是一个函数对象(一个可执行代码块),所以可以使用a(2,3)这样的语句进行求和操作。通常的编程语言中,我们会将函数/方法的返回值(基本数据类型或者对象)赋值给其他的变量,但是无法做到将函数/方法本身赋值给其他变量。究其原因,是因为在这些编程语言中,没有一种数据类型表示函数。
实际上,这个和第一个例子本质一样。第一个例子中的a变量,是全局对象window的一个属性,而在第二个例子中则为obj对象。
可以看到:函数adPrint2的第二个参数,实际上是一个函数(接受一个字符串为参数,并返回参数字符串的大写/小写形式),将这个处理函数作为函数参数传入,在adPrint2的内部,仍然可以调用这个函数。在客户端的JavaScript中,在异步事件的回调函数中更是必须的一种模式(比如:鼠标点击事件,Ajax请求的回调等)
1.调用currying()会得到:function(){
alert("curring");
}
2.如果调用currying返回的是这个匿名函数,需要这样:currying()();第一个括号表示操作,表示调用currying本身,返回值是函数;第二个括号操作符调用这个返回值,所以会得到这样的结果:curring;
我们可以使用String构造器创建关键字符串,然后使用String方法访问它。
也可以基于基本字符串类型使用变量,并且仍然可以访问String对象的方法。当调用String对象的方法时,JavaScript引擎会隐式地将字面量包装在一个对象中。
实际上可以这样写:document.writeIn("Learning Java".replace(/Java/,"javascript"));
所谓的函数字面量,就是说当想创建一个函数时候,不使用function构造函数,同样可以将其赋给一个变量,这样它在字面量上就成了函数字面量。
函数字面量也称为函数表达式,因为这样创建的函数将称为表达式的一部分,而不是一个特有类型的语句。它们像匿名函数一样没有定义函数名称,不过和匿名函数直接是有差异的。函数字面量只会解析一次,实际上,除了把函数赋给一个变量之外,函数字面量和声明式函数式类似的:
1. 赋值给一个变量
//声明一个函数,接受两个参数 function add(x,y){ return x+y; } var a=0; a=add;//将函数赋值给一个变量 var b=a(2,3); alert(b);//5
结果:
分析:赋值之后,变量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引擎会隐式地将字面量包装在一个对象中。
var str2="Learning Java"; document.writeIn(str2.replace(/Java/,"javascript"));
实际上可以这样写:document.writeIn("Learning Java".replace(/Java/,"javascript"));
所谓的函数字面量,就是说当想创建一个函数时候,不使用function构造函数,同样可以将其赋给一个变量,这样它在字面量上就成了函数字面量。
var func=function (params){ statements; }
函数字面量也称为函数表达式,因为这样创建的函数将称为表达式的一部分,而不是一个特有类型的语句。它们像匿名函数一样没有定义函数名称,不过和匿名函数直接是有差异的。函数字面量只会解析一次,实际上,除了把函数赋给一个变量之外,函数字面量和声明式函数式类似的:
var func=function(x,y){ return x*y; } alert(2,3);
相关文章推荐
- gedit 格式化json
- ExtJS 修改load paging时的参数
- js table增加一行,显示每列总和
- JavaScript中constructor()方法的使用简介
- Js、css代码文件规范
- eval、json.parse()的介绍和使用注意点
- js中调用函数时加不加括号的问题
- javascript eval和JSON之间的联系
- JavaScript中的原型prototype属性使用详解
- jstl 简介
- jsp 2种include标签的区别
- 简介JavaScript中POSITIVE_INFINITY值的使用
- javaScript中eval()方法转换json对象
- JavaScript 的性能优化:加载和执行
- JavaScript中Number.NEGATIVE_INFINITY值的使用详解
- 关于tbody js取法兼容。
- 在JavaScript中使用NaN值的方法
- JS弹框(alert,confirm,prompt)
- 《JavaScript程序设计》第2课:JS类型系统
- JSON简单了解