我有以下功能登錄通過在某一給定時間的函數是句子中的人物,看看下面的功能:For循環不允許的setTimeout執行
function print_string(param , timer) {
var strt_point = 0,
str_len = param.length,
self = this;
//typewritter();
typeit();
function typeit() {
setTimeout(function(){
console.log(param.substring(strt_point).charAt(0));
if(strt_point < str_len) {
strt_point++;
typeit()
}
} , timer);
}
}
var str = print_string("hey there , whats up , hows the weather in Manhatten" , 50);
console.log(str);
以上程序員工作正常,現在如果我添加一個for循環到上面的程序IE 包裹的setTimeout在for循環中,
function print_string(param , timer) {
var strt_point = 0,
str_len = param.length,
self = this;
for(var i = 0 ; i < str_len ; i++) {
//typewritter();
typeit();
function typeit() {
setTimeout(function(){
console.log(param.substring(strt_point).charAt(0));
if(strt_point < str_len) {
strt_point++;
typeit()
}
} , timer);
}
}
var str = print_string("hey there , whats up , hows the weather in Manhatten" , 50);
console.log(str);
所有的人物在一次打印,爲什麼呢?
爲什麼for循環不符合setTimeout
間隔?有人可以解釋嗎?
你有一個函數,這是不允許的內部函數,函數typeit是內部功能print_string –
豈不等於說他們調用關閉?任何文件來證明你的話是什麼?我是一個JS新手,所以不是專家本人! –
這真是毫無根據的@BhawinParkeria – charlietfl