這兩個(gè)寫法什么區(qū)別,為什么寫成第二種的時(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è)贊
第一種寫法是聲明匿名函數(shù),相當(dāng)于假如我給函數(shù)賦個(gè)名字abc,然后setTimeout(abc,1000),只是你那種寫法是匿名的
第二種寫法是字符串寫法,相當(dāng)于內(nèi)部執(zhí)行了eval(),這種寫法你會(huì)發(fā)現(xiàn)有時(shí)能執(zhí)行有時(shí)不能執(zhí)行,因?yàn)樽址畬懛ㄖ荒懿东@到全局作用域,就是說CountZero這個(gè)函數(shù)必須放在全局作用域下才能被執(zhí)行,
而setTimeout(abc,1000)這種寫法則既可以捕獲全局作用域,也可捕獲同一個(gè)局部作用域;
因此第二種字符串寫法是不推薦的,不規(guī)范而且功能上有限制,eval()也有安全問題
- 1 回答
- 0 關(guān)注
- 1663 瀏覽
添加回答
舉報(bào)
0/150
提交
取消