函数

来源:互联网 发布:编程入门书籍下载 编辑:程序博客网 时间:2024/04/29 23:52

函数在js中也是一种数据类型,属于function类型

三种定义方式:

1.function语句的形式:

function test1(){

alert('1111');

}

2.函数直接量的形式:

var test2 = function(){

alert('2222');

}

3.构造函数的形式:

var test3 = new Function('a','b','return a+b')

最后一个参数是test3的函数体,前面的参数是test3的参数。

三种方式的比较:

 function语句形式函数直接量形式构造函数形式名称有名匿名匿名性质静态静态动态解析时机优先解析顺序解析顺序解析作用域函数的作用域函数的作用域顶级作用域

解析顺序问题:

alert(f1());   // 3//alert(f2()); //不能执行function f1(){return 1;}          alert(f1()); // 3alert(f2); // undefined 说明f2先声明后赋值的var f2 = function(){return 2;}alert(f2); // functionalert(f2()); // 2function f1(){return 3;}var f2 = new Function('return 4;')alert(f2()); //4

f1优先解析,所以第一个alert()可以执行,而且前面的f1被后面的f1覆盖。只要函数名一样,后解析的就会覆盖前面的。

f2都是声明式定义,顺序解析,赋值之后才能调用f2()。

作用域问题:

var k = 1;function f1(){var k = 2;//function f2(){return k;} // 2  函数作用域//var f2 = function(){return k;} // 2 函数作用域var f2 = new Function('return k;'); // 1 全局作用域alert(f2());}f1();






0 0