JS技术

JavaScript学习(1):基础(3)

字号+ 作者:H5之家 来源:H5之家 2015-09-14 11:00 我要评论( )

1 function foo(x){ 2 var y =1 ; (z){ 4 y = y+1 ; 5 print(x+y+ z); 6 } 7 } bar=foo(1 ); 10 bar(1); 我们可以看到上面代码中foo的返回值本身就是一个匿名函数,如果我们多次调用bar(1),可以发现foo函数的局部

1 function foo(x){ 2 var y =1; (z){ 4 y = y+1; 5 print(x+y+z); 6 } 7 } bar=foo(1); 10 bar(1);

  我们可以看到上面代码中foo的返回值本身就是一个匿名函数,如果我们多次调用bar(1),可以发现foo函数的局部变量y的值是一直在递增。

  闭包在实际的应用中,一般是用来封装对复杂数据结构的各种操作,从而对外提供简单易用的接口,用户在使用时不用太关心闭包内部的实现细节。

  4.6 函数的可变参数

  JavaScript在调用函数时,并不会限制传入参数的个数,当传入参数的个数多于函数定义中参数的个数时,多余的参数会被忽略;当传入参数的个数小于函数定义中参数的个数时,缺失的参数默认是undefined。

  我们来看下面的例子:

1 function argumentTest(v1,v2,v3,v4){ 2 print(v1+v2+v3+v4); 3 } argumentTest(1,2,3); 7 argumentTest(1,2,3,4,5); NaN 12 10

  可以看到,当我们给出的参数有缺失时,默认的undefined和其他参数做运算时,返回了NaN。当我们给出的参数有富余时,被自动忽略了。

  在JavaScript中,函数中有默认的一个变量,名为arguments(在这里,arguments并不是一个数组,typeof arguments返回的是object),它用来保存所有传入的参数,我们来看下面的例子:

1 function argumentTest(v1,v2,v3,v4){ 2 var result=0; 3 for(var i = 0; i < arguments.length;i++){ 4 result=result+arguments[i]; 5 } 6 print(result); 7 } argumentTest(1,2,3); 11 argumentTest(1,2,3,4,5); 6 15 15

  这里我们可以看到,无论我们传入了多少参数,都可以被适当的处理了。

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 老生常谈,JavaScript闭包中的this对象

    老生常谈,JavaScript闭包中的this对象

    2016-02-26 10:21

  • 学习JavaScript之this,call,apply

    学习JavaScript之this,call,apply

    2016-01-28 20:45

  • JavaScript复习笔记--字符串

    JavaScript复习笔记--字符串

    2016-01-27 17:16

  • WEB前端教程-JavaScript里的类和继承

    WEB前端教程-JavaScript里的类和继承

    2016-01-21 15:28

网友点评
/