1、回调函数(通过函数的指针来调用函数,把一个函数的指针做为另一个函数的参数,当调用这个参数的时候,这个函数就叫做回调函数)
a.通过指针来调用
function aa(a,b,fun){ return fun(a,b); } function bb(a,b){ return a+b; } function cc(a,b){ return a*b; } alert(aa(3,2,bb)); 结果:5 alert(aa(3,2,cc)); 结果:6
b.匿名方法
function aa(a,b,fun){ return fun(a,b); } alert(aa(3,2,function(a,b){return a*b})); 结果:6 alert(aa(3,2,function(a,b){return a+b})); 结果:5
c.定义和调用同时进行
alert( (function aa(a,b,fun){ return fun(a,b); })(2,3,function(a,b){return a*b}) ) 结果:6
2、递归函数(在函数内部直接或间接的调用自己)
function abc(num){ if(num<1){ num=num; }else{ abc(--num); } document.write(num); } abc(4); 结果:00123
//5*4*3*2*1 function aa(num){ if(num==1){ return num; }else{ return num*aa(--num); } } alert(aa(5)); 结果:120
3、内嵌函数(闭包)
function aa(){ var a=1; return function bb(){ alert(a+1); } } aa()(); 结果:2
javascript 内置 顶层 函数
内置: ECMAscript
内置函数:ECMAscript 自带的函数--Number()
宿主函数: BOM DOM alert() prompt() confirm();
顶层
a.字符串函数:字符串.函数()
b.数组函数
c.顶层对象的函数,可以作用于任何对象。
************内置顶层函数**************
1.escape() 对字符串进行编码
2.unescape() 对编码的字符串进行解码
3.Number() 转换成数值类型
4.String() 转换成字符串类型
5.Boolean() 转换成布尔类型
6.parseInt() 将字符串转换为整型
7.parseFloat() 转换为小数
8.isNaN() 判断一个数能否转换为数值类型。
9.isFinite() 判断一个数是否为有穷的数字。将不是有穷的数字或不能转换为数值类型的数返回假。
10.eval() 将字符串转换成javascript命令执行(必须符合javascript语法规范,否则会出错)
eval兼容性问题处理
IE:
eval() 在当前作用域生效
window.eval() 在当前作用域生效(在IE9以上全局生效)
execScript() 在全局生效(只有ie认)
FF:
eval() 在当前作用域生效
window.eval() 在全局生效
function AllEval(str){ if(typeof str!='string') return; if(window.execScript){ window.execScript(str); }else{ window.eval(str); } } AllEval('var a=1;alert(a)');