JS 函数的声明方式 参数注意 返回函数

函数的声明方式

第一种 可实现函数优先加载的

func();
var func = 100;
function func() {
    alert('第一种声明方式');
}
func();

第二种 匿名 函数名不能跟变量名重复

func_2();
var func_2 = function() {
    alert('第二种声明方式');
}
func_2(); // JS调用匿名函数只在声明函数之后

第三种

var func_3 = new Function('x','y','alert(x+y)');
func_3(1,3); // 4

//函数调用
func();  //直接调用
//赋值给一个变量
var res = func();
alert(res); // 在函数内部如无return 手动返回一个值的话,默认是undefined
<div style="width:200px;height:200px;background:red" onclick="func_2()"></div> // 事件调用

参数注意

// 不要加初始值 IE浏览器不兼容
function func($a, $b = 10) {
    alert($a+$b);
}

function add(a, b) { // 如果实参个数>形参个数,多余的参数将会被舍弃
    //打印两个参数      如果实参个数<形参个数,没有传递的值默认变成undefined
    console.log(a);
    console.log(b);
    //打印所有的参数
    console.log(arguments); // PHP中获取实参元素的函数 func_get_args
    alert(a+b);               在JS中使用的是arguments
}
add(1,2,3); // 3
add(1); // NAN
add(1,2,3,4,253,2,4,43,24);

返回函数

function test()
{
    return function(){
        alert('iloveyou');
        return function(){
            alert('i miss you');
            return function(){
                alert('i hate you');
                return function(){
                    alert('i dislike you');
                }
            }
        }
    }
}
var res = test(); 返回函数
res(); // iloveyou
var res2 = res(); // iloveyou
res2(); // i miss you
// console.log(res);
// console.log(typeof(res));