這兩個(gè)寫(xiě)法什么區(qū)別,為什么寫(xiě)成第二種的時(shí)候不起作用1、var CountZeros=setTimeout(function() {?????? CountZero()?????? },1000)2、 var CountZeros=setTimeout("CountZero()",1000);
1 回答
已采納

stone310
TA貢獻(xiàn)361條經(jīng)驗(yàn) 獲得超191個(gè)贊
第一種寫(xiě)法是聲明匿名函數(shù),相當(dāng)于假如我給函數(shù)賦個(gè)名字abc,然后setTimeout(abc,1000),只是你那種寫(xiě)法是匿名的
第二種寫(xiě)法是字符串寫(xiě)法,相當(dāng)于內(nèi)部執(zhí)行了eval(),這種寫(xiě)法你會(huì)發(fā)現(xiàn)有時(shí)能執(zhí)行有時(shí)不能執(zhí)行,因?yàn)樽址畬?xiě)法只能捕獲到全局作用域,就是說(shuō)CountZero這個(gè)函數(shù)必須放在全局作用域下才能被執(zhí)行,
而setTimeout(abc,1000)這種寫(xiě)法則既可以捕獲全局作用域,也可捕獲同一個(gè)局部作用域;
因此第二種字符串寫(xiě)法是不推薦的,不規(guī)范而且功能上有限制,eval()也有安全問(wèn)題
- 1 回答
- 0 關(guān)注
- 1669 瀏覽
添加回答
舉報(bào)
0/150
提交
取消