Показать сообщение отдельно
  #29 (permalink)  
Старый 07.07.2014, 23:44
foo foo вне форума
Профессор
Отправить личное сообщение для foo Посмотреть профиль Найти все сообщения от foo
 
Регистрация: 17.05.2014
Сообщений: 197

kobezzza,
короче, не буду лить воды. Я проверил в ноде на следующем коде:
Код:
fs=require("fs")
write=function(){
	fs.writeFileSync("./counter.txt", counter)
}

fu=function(){counter++; write(); fu()}
counter=0
fu()

path.js:163
    resolvedTail = normalizeArray(resolvedTail.split(/[\\\/]+/).filter(f),
                                               ^
RangeError: Maximum call stack size exceeded
Эта функция 100% содержит хвосторекурсивный вызов. Если бы оптимизация была, этот код выполнялся бы бесконечно. Как видишь, никаких эвалов и прочих Function тут нет. Выполнение остановились на 25104
Попробуй на своей модной новейшей ноде, потом расскажешь. А пока я засчитываю тебе слив. В JS нет оптимизации хвостовой рекурсии.
Ответить с цитированием