anonymous function js匿名函数与常见的函数声明方法
来源:原创
时间:2015-10-04
作者:脚本小站
分类:JS/JQuery
对于js初学者或对js不是很熟悉的人来说写js可能会遇到各种各样奇怪的问题,因为js语法和一般语言不太一样。我也只能这么说了,因为我对js也不是太了解。
下面是我在写离开页面的事件时遇到的。
我一开始的写法是这样的:
window.onbeforeunload = function (){
alert('ll');
}
然后就报错,错误信息:
Uncaught TypeError: undefined is not a function
(anonymous function)
之后查了一下是这样写就对了。
// 离开页面执行 window.onbeforeunload = fun();//刷新或离开页面执行 function fun(){ //最好不要直接调用匿名函数 }
下面是常见的函数声明方法:
//7种函数 setInterval(function(){ //这里用到了匿名和回调 },50); //1. function test(num){ document.write(num); if(num > 0){ test(num-1); } document.write(num); } test(5); //2.递归的使用场景 function login(){ var msg = prompt('请输入用户名','SB250'); if(msg == '我是个傻X'){ alert('亲!你太诚实了!!'); }else{ login(); } } login(); //3.自调函数 var test = function(){ alert(1); return function(){ alert(3); } } //4.自调函数是定义好之后,立即调用一次 //如果前面出现了匿名函数,那么自调函数的第一个小括号会将上面的匿名函数调用一次, 第二个小括号会将第一次调用的返回值当作函数调用,如果第一个返回的不是函数,那么报错!! //我们建议,匿名函数不要和自调函数出现在同一个文件中 (function(a){ alert(a); })('hello'); //5.返回函数的函数 function test(){ alert(1); return function(){ alert(2); } } var a = test(); a(); //6.能够重写自己的函数 function a(){ alert('我在这做了很多事情'); a = function(){ alert('你已经干过我一次了'); } } a(); a(); //7.构造函数 function Person(name,age){ this.name = name; this.age = age; this.say = function(){ alert('我在喊话'); } } var p1 = new Person('aaa',18); p1.say();