javascript的函数
// 3种方式定义函数
/*
// 1 function语句式
function test1(){
alert('我是test1');
}
//test1();
// 2函数的直接量 ECMAScript
var test2 = function(){
alert('我是test2');
}
//test2();
// 3function构造函数式
var test3 = new Function("a" , "b" ,"return a+b;");
//alert(test3(10,20));
*/
//效率对比
/*
var d1 = new Date();
var t1 = d1.getTime();
for(var i =0 ; i <100000;i++){
//function test1(){;} //function语句的形式
var test2 = new Function();
}
var d2 = new Date();
var t2 = d2.getTime();
alert(t2 -t1);
*/
// 解析顺序问题 对于function语句式的函数,javascript解析器会优先的解释
/*
test1();
function test1(){
alert('1111');
}
*/
//alert(test2); //表示变量声明了 但是没有被赋值
//test2();
/*
var test2 = function(){
alert('2222');
}
*/
/*
// 4 2 3 3 5 6
function f(){return 1;} // 函数1
alert(f()); //返回值为4 说明第1个函数被第4个函数覆盖
var f = new Function("return 2;"); // 函数2
alert(f()); //返回值为2 说明第4个函数被第2个函数覆盖
var f = function(){return 3;} // 函数3
alert(f()); //返回值为3 说明第2个函数被第3个函数覆盖
function f(){return 4;} // 函数4
alert(f()); //返回值为3 说明第4个函数被第3个函数覆盖
var f = new Function("return 5"); // 函数5
alert(f()); //返回值为5 说明第3个函数被第5个函数覆盖
var f = function(){return 6 ;} // 函数6
alert(f()); //返回值为6 说明第5个函数被第6个函数覆盖
*/
//函数作用域的概念
/*
var k = 1 ;
function t1(){
var k = 2 ; //局部变量 k
//function test(){return k ;} //function语句
//var test = function(){ return k}; //函数直接量
//var test = new Function('return k;'); // 构造函数的方式
alert(test());
}
t1();
*/