//1.function语句式
function test1(){
alert("I am test1");
}
test1();
//2.函数直接量形式
var test2 = function(){
alert("I am test2");
}
test2();
Function构造函数可以接收任意数量的参数,但最后一个参数始终都被看成函数体。我们不推荐使用,因为这种语法会导致解析两次代码,第一次是解析常规的JS代码,第二次是解析传入构造函数中的字符串,从而影响性能。
//3.通过Function构造函数形式
var test3 = new Function("a","b","return a + b");
alert(test3(10,20));
/*
* 测试解析时机
*/
test1();// I am test1
function test1(){
alert("I am test1");
}
test2();//报错
var test2 = function(){
alert("I am test2");
}
alert(test3(10,20));
var test3 = new Function("a","b","return a + b");
function语句是会被JS解析器优先解析。
/*
* 测试函数作用域
*/
var k = 1;
function test(){
var k = 2;
function demo(){
return k;
}
var demo = function(){
return k;
}
var demo = new Function("return k");
//1.function语句式: 2
//2.function字面量式: 2
//3.Function构造函数式: 1
alert(demo());
}
test();原文:http://www.cnblogs.com/yangang2013/p/5440330.html