javascript创建函数的三种方式

来源:互联网 发布:美图软件大全 编辑:程序博客网 时间:2024/06/04 19:04
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><script type="text/javascript" charset="UTF-8">/** * 函数的3种创建方法 *///1、语句式   function test(a,b){return a+b;}console.log(test(1,2));//2、直接量式var test1 = function(a,b){return a+b;}console.log(test1(3,4));//3、构造函数式var test2 = new Function('a','b','return a+b;');console.log(test2(2,4)); /** * 三种方式的解析顺序 */test3();function test3(){console.log('我是test3,语句式创建的');}//test4(); //出错,因为test4只是被声明为全局变量,可是还没有赋值var test4 = function(){console.log('我是test4,直接量方式创建的');}test4();// test5(); //出错,因为test5只是被声明为全局变量,可是还没有赋值var test5 = new Function("console.log('我是test5 ,构造函数式创建的')");//解析顺序和直接量方式一样(顺序解析)test5();/** *  三种方式的效率 */var d1 = new Date();var t1 = d1.getTime();for(var i=0;i<100000;i++){// function test6(){;};// 语句式其次    // var test7 = function(){;};//直接量式最快//var test8 = new Function();// 构造函数式最慢}var d2 = new Date();var t2 = d2.getTime();console.log(t2-t1);/** * 三种方式的作用域 */var k=1;//当这里的k注释掉时,构造函数式会报错找不到kfunction t1(){var k=2;//function demo(){console.log(k);};// 2//var demo = function(){console.log(k)};// 2var demo = new Function('console.log(k)');// 1   构造函数式 定义的函数相当于全局,看不见函数内的k,(顶级作用域)demo();}t1();</script></head><body></body></html>

0 0
原创粉丝点击