🔥

Тред (Роман Дворнов)


Вот пример, казалось бы, что тут не так? (str всегда не пустая строка) function isComment(str){ return str[0] === '/' && str[1] === '*'; }

Функция деоптимизировалась из-за второго условия. Так как если строка меньше двух символов, то происходит выход за пределы строки

Чтобы не было деоптимизации нужно сделать так: function isComment(str){ return str.length >= 2 && str[0] === '/' && str[1] === '*'; }

И в коде было еще несколько мест, где был выход за пределы массива, которые приводили к деоптимизации.