1、函数的最大作用是提供代码复用;
2、JavaScript函数是弱类型语言,定义函数时既不要声明函数的返回值,也不要声明函数的参数列表类型;
语法如下:
function functionName(parameter-list){
statements;
}
3、函数可以有返回值,也可以无返回值。函数运行过程中遇到一条return语句即返回返回值,函数结束;
function hello(){
return 6;
} alert(hello());//输出6;
4、局部函数:在函数A内定义一个函数B,则B为局部函数,局部函数B只能在函数A内调用有效,无法在函数A之外调用,如果在函数A之外调用,将会报未定义错误;
function A(){
//定义局部函数B1;
function B1(){
document.write("局部函数inner1");
}
//定义局部函数B2;
function B2(){
document.write("局部函数inner2");
} //调用局部函数;
B1();//输出"局部函数inner1";
B2();//输出"局部函数inner2";
};
//调用全局函数;
A();
//在函数A外部调用局部函数B1;
B1();//在firefox的firebug下的控制台中可以看到错误提示“B1 is not defiend”;
5、JavaScript允许传递空参数给函数,但是却不允许使用未定义的变量或函数;传递空参数给函数,虽然会得到undefined值,但是浏览器不会报错;但如果使用未定义的变量或函数,浏览器会报未定义错误;
6、如果将一个对象的某个实例方法用“对象名.方法名()”的形式当作函数调用,则既不会得到undefined值,也不会报未定义错误,而是会报“XX is not a function”错误;
7、匿名函数的创建方式:
方式一:使用new关键字加Function对象创建;
var f = new Function('name','document.write(name)');
//Function对象构造器的参数可以不受限制。
//Function可以接受一系列的字符串参数,其中最后一个参数是函数的执行体;执行体的各语句以分号隔开;
方式二:直接创建;
var f = function(name){document.write(name)};
f('yeeku');
8、可以将一个函数赋给一个普通变量,将一个函数abc赋给一个普通变量f后,通过f()即可调用abc函数,而abc()将失去作用,无法调用,如果调用,将报abc未定义错误;但是在IE中的IE8以下版本的浏览器中却不一样,在IE8以下的浏览器中将一个函数赋给一个普通变量后,将会得到两个一样的函数,两个都可以调用;
var f = function abc(name){
document.write(name);
}
f('yeku');//输出yeku;
abc('yeku');//在firefox中报未定义错误,在IE中输出yeku;
9、函数的局部变量、实例属性和静态属性;
局部变量:在函数中以普通方式声明的变量,包括以var或不加任何前缀声明的变量;
局部变量只能在函数内调用,在函数外调用将会报未定义错误;
实例属性:在函数中以this前缀修饰的变量;实例属性是属于单个对象的,只有对象才可以调用,类如果调用实例属性将会出现未定义错误;
静态属性:在函数中以函数名为前缀修饰的变量;
静态属性是属于类的,只有类才可以调用,对象如果调用静态属性将会出现未定义错误;