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();