Javascript初级 JavaScript进阶

JavaScript匿名函数


1.函数也是数据


JavaScript中的函数也是一种数据类型,只不过这种数据类型有两个重要的特征值

(1)他们所包含的是代码

(2)他们是可以执行的


2.回调函数


回调函数的优势

(1)可以让我们再不做命名的情况下传递函数,这样可以节省全局变量

(2)我们可以将一个函数用操作委托给另一个函数,这样可以节省一些代码编写


3.自调函数


优点:使用自调匿名函数不会产生任何全局变量

缺点:函数无法重复执行,适合执行一些一次性的或初始化的任务


4.内部(私有)函数


优点:

(1)确保全局名字空间的纯净性,防止命名冲突

(2)私有性之后我们就可以选择只将一些必要的函数暴露给外部,并保留属于自己的函数,使其不被其他应用程序所调用


5.返回函数的函数


6.闭包


作用域链



源代码 


<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8">

<title></title>

</head>

<body>

<script type="text/javascript">

var test=function calc(a,b){

return a+b;

};

//  alert(typeof test);

//  alert(test(1,2));

//  var test1=test;

//  alert(typeof test1);

//  alert(test1(3,4));

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

123;

'king';

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

//  alert(test2(5,4));

var test3=test2;

alert(test3(3,4));

    </script>

</body>

</html>

运行结果:

javascript1.png 


<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8">

<title></title>

</head>

<body>

<script type="text/javascript">

//回调函数的例子

function calc(x,y){

return x()+y();

}

function test1(){

return 3;

}

function test2(){

return 5;

}


//   alert(calc(test1,test2));

alert(calc(function(){return 5;},function(){return 10;}));

</script>

</body>

</html>

运行结果:


javascript2.png 


<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8">

<title></title>

</head>

<body>

<script type="text/javascript">

//   function cheng2(a,b,c){

//    var i,arr=[];

//    for(i=0;i<3;i++){

//     arr[i]=arguments[i]*2;

//    }

//    return arr;

//   }

//   function jia1(a){

//    return a+1;

//   }

//  

//   var arr1=[];

//   arr1=cheng2(10,20,30);

//   alert(arr1);

//   for(var i=0;i<3;i++){

//    arr1[i]=jia1(arr1[i]);

//   }

//   alert(arr1);

function addOne(a){

return a+1;

}

function test(a,b,c,callback){

var i,arr=[];

for(i=0;i<3;i++){

arr[i]=callback(arguments[i]*2);

}

return arr;

}

//  alert(test(5,6,7,addOne));

//  alert(test(5,6,7,function(a){return a+2}));

function test1(a,b){

return a*b;

}

//  alert(test1.call(test1,5,10));

var params=[3,4];

//  alert(test1.apply(test1,params));

//自调用函数的形式

(

function(){

alert('this is a test');

}

)();


(

function(a,b){

alert(a+b);

}

)(3,5);

</script>

</body>

</html>

运行结果:


javascript3.pngjavascript4.png



【本文由麦子学院独家原创,转载请注明出处并保留原文链接】

logo
© 2012-2016 www.maiziedu.com
蜀ICP备13014270号-4 Version 5.0.0 release20160127

您有一个400抵2000现金红包未使用!

客服热线 400-862-8862

回到顶部