標籤:javascript
<!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>
javascript建立函數的三種方式