您的位置:首页 > Web前端 > JavaScript

函数的基本知识,解析顺序,效率,作用域

2016-07-03 20:08 363 查看
•三种定义函数的方式:

–function语句形式

–函数直接量形式

–通过Function构造函数形式定义函数

•比较三种方式定义的区别:

function语句

Function构造函数

函数直接量

兼容

完全

js1.1以上

js1.2以上版本

形式

句子

表达式

表达式

名称

有名

匿名

匿名

性质

静态

动态

静态

解析时机

优先解析

顺序解析

顺序解析

作用域

具有函数的作用域

顶级函数(顶级作用域)

具有函数作用域

/*----------------------函数效率对比--------------------*/
var date = new Date();
var d1 = date.getTime();
for(var i=0; i<100000; i++){
function test(){;};     //function语句形式效率更高
//var test2 = new Function();
}
var date2 = new Date();
var d2 = date2.getTime();
alert(date2 - date);

/*--------------------函数解析顺序----------------------*/
//function语句形式:优先解析,先解析function函数
test();
function test(){
console.log('语句形式,优先解析');
}

//函数直接量形式:顺序解析,先解析test2方法在解析函数
test2();
var test2 = function(){
console.log('直接量形式,顺序解析');
}

/*----------------------函数解析顺序--------------------*/
//第一个函数,返回4,说明第一个函数被第四个函数覆盖
function f(){
return 1;
}
console.log(f());

//第二个函数,返回2,说明第四个函数被第二个函数覆盖
var f = new Function("return 2")
console.log(f());

//第三个函数,返回3,说明第二个函数被第三个函数覆盖
var f = function(){
return 3;
}
console.log(f());

//第四个函数,返回3,说明第四个函数被第三个函数覆盖
function f(){
return 4;
}
console.log(f());

//第五个函数,返回5,说明第三个函数被第五个函数覆盖
var f = new Function("return 5")
console.log(f());

//第六个函数,返回6,说明第五个函数被第六个覆盖
var f = function(){
return 6;
}
console.log(f());

/*---------------------函数作用域的概念---------------------*/
var k = 1;
function t1(){
var k = 2;
//返回2
function test(){
return k;
}

//返回2
var test = function(){
return k;
}

//返回1
var test = new Function('return k');

console.log(test());
}
console.log(t1());
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  javascript