JS的三种函数声明
来源:互联网 发布:java空指针异常 编辑:程序博客网 时间:2024/06/04 01:18
js有3种方法进行函数声明。
1、function语句类型函数声明
function test1(){}
函数的调用方式:test1();
2、函数的直接量形式
var test2 = function(){}
函数的调用方式:test2();
3、构造函数式
var test3 = new Function("a","b","return a+b;");
函数的调用方式:test3(10,20);
3种函数声明方式比较:
首先从性质上来说明:第一种和第二种都属于静态,第三种属于动态
其次从解析顺序上说明:第一种优先解析,第二种和第三种都属于顺序解析,为了更好的说明,做如下的测试。
//探测三种函数声明的解析顺序
function f(){return 1;}
alert(f());
var f = new Function("return 2;");
alert(f());
var f = function(){return 3;}
alert(f());
function f(){return 4;} //标记1
alert(f()); //标记2
var f = new Function("return 5;");
alert(f());
var f = function(){return 6;}
alert(f());
也许你会认为执行以上函数之后,输出的结果为1,2,3,4,5,6,事实上,结果的执行顺序为4,2,3,3,5,6,怎么样,很吃惊吧,让我来给阁下解释一下。
function语句类型函数声明优先解析,当页面加载之后,js解析器会首先解析该函数,语句型f函数共两个,首先return 1,而后再解析另一个语句型函数f,由于js中没有重载,所以第二个f函数会覆盖第一个return 4,因此,在alert的时候先输出4,其他的函数都是顺序执行,故顺序输出,2,3,当函数执行到标记1的时候,发现页面加载时该函数已解析,故不再解析,所以执行标记2的时候,f函数依然是上一次解析的f函数,故输出3,接着再顺序执行,因此最后的输出结果为:4,2,3,3,5,6.
若还有不明白的地方,欢迎大家留言!
阅读全文
0 0
- JS的三种函数声明
- js中函数的三种定义方式、函数声明、函数同名重复、函数删除、
- js数组的三种声明方式
- JS 声明全局变量的三种方式
- javascript 函数声明的三种方式
- 声明函数的三种方式
- js函数声明的几种方式
- javascript中定义声明函数的三种方法
- 【javascript笔记】声明函数的三种方式<二>
- JavaScript——函数的三种声明方式
- JS中函数的声明和引用
- js声明匿名函数
- js:函数声明
- js函数声明
- JS函数-函数声明和函数表达式之间的恩怨
- JS函数-函数声明和函数表达式之间的恩怨
- js定义函数的三种方法
- JS的三种函数形式
- 利用JS对象去掉数组中的重复值
- 初学Spring
- structs中的result类型
- Android为应用添加角标(Badge)
- JS其他引用类型对象
- JS的三种函数声明
- 虚函数和纯虚函数的区别
- JS中的call和apply浅谈
- 栈结构
- js模拟Java类
- Myeclipse调试快捷键
- [HDU5414]CRB and String
- UVa1471 LIS变种 nlgn
- 数据库连接池