Сегодня я читал harmony:proper_tail_calls предложение, и я заметил, что в references была ссылка гласивший, “ Brendan discovers that ES5/strict enables TCO. ”Как правильно включить хвостовые звонки в режиме ES5/strict?
Что это означает, что ES5/строги “ ” позволяет TCO? Сначала я подумал, что первоначальные реализации правильных хвостовых вызовов доступны в режиме ES5/strict. Тем не менее, это явно не так, как показывают эти контрольные показатели:
- ES5/strict TCO (n = 10000).
- ES5/strict TCO (n = 1000).
Я использовал следующие две функции в указанных выше тестах:
function without_tco(x) {
if (x === 0) return x;
return without_tco(x - 1);
}
function with_tco(x) {
"use strict";
if (x === 0) return x;
return with_tco(x - 1);
}
Во всяком случае, мой вопрос: как собственно хвост вызывает “ ” включен в ES5/строгом режиме?