一种对于js函数定义比较的理解,下面给出代码进行测试比较
/*性能测试*/
var d = new Date();
for (var i = 0; i < 10000; i++) {
function test() {;};
}
var d2 = new Date();
var interval = d2.getTime() - d.getTime();
console.log("function语句式生成函数执行1万次所需时间:" + interval + " ms");
var d3 = new Date();
for (var i = 0; i < 10000; i++) {
var test = new Function();
}
var d4 = new Date();
var interval = d4.getTime() - d3.getTime();
console.log("function构造器生成函数执行1万次所需时间:" + interval + " ms");
var d5 = new Date();
for (var i = 0; i < 10000; i++) {
var test = function() {
;
};
}
var d6 = new Date();
var interval = d6.getTime() - d5.getTime();
console.log("function直接量生成函数执行1万次所需时间:" + interval + " ms");
/*函数的解析机制*/
function e() {
console.log("1");
}
e(); //--打印为3
var e = function() {
console.log("2")
}
e(); //--打印为2;
function e() {
console.log("3");
}
e(); //--打印为2;
var e = new Function("console.log(‘4‘)");
e(); //--打印为4;
/*作用域访问*/
k = 1;
function outer() {
var k = 2;
var inner = new Function("console.log(k)");
inner();
}
outer();
function outer2() {
var k = 2;
var inner = function() {
console.log(k);
};
inner();
}
outer2();
原文:http://www.cnblogs.com/zhaojunyang/p/4941290.html