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

stone310
TA貢獻361條經驗 獲得超191個贊
第一種寫法是聲明匿名函數,相當于假如我給函數賦個名字abc,然后setTimeout(abc,1000),只是你那種寫法是匿名的
第二種寫法是字符串寫法,相當于內部執行了eval(),這種寫法你會發現有時能執行有時不能執行,因為字符串寫法只能捕獲到全局作用域,就是說CountZero這個函數必須放在全局作用域下才能被執行,
而setTimeout(abc,1000)這種寫法則既可以捕獲全局作用域,也可捕獲同一個局部作用域;
因此第二種字符串寫法是不推薦的,不規范而且功能上有限制,eval()也有安全問題
- 1 回答
- 0 關注
- 1675 瀏覽
添加回答
舉報
0/150
提交
取消