下面是我在写离开页面的事件时遇到的。

我一开始的写法是这样的:

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