Ты - раб на галере. Тебе дали другое весло, но ты не хочешь им грести, аргументируя тем, что оно тебе незнакомо. Как думаешь, кто отправится кормить рыб?
Всё дело в том, что String.Intern(x2) как раз и возвращает ссылку на интернированную строку, не важно, где ты функцию вызываешь. А вот в x2 в обоих примерах так и останется ссылка на НЕ интернированную строку.
function f(n) {
n = (typeof n == 'string') ? n : n.toString();
if (n.indexOf('e') !== -1) return parseInt(n.split('e')[1]) * -1;
var separator = (1.1).toString().split('1')[1];
var parts = n.split(separator);
return parts.length > 1 ? parts[parts.length - 1].length : 0;
}
Извините, но телепаты ещё не вернулись с новогодних каникул. Я к тому, что по Вашему описанию, никто в мире не скажет точно, проблема в кривых руках разработчика, сложности задачи, недостатка денег и времени или чего либо ещё, или всего вместе взятого.
1. Выбрать все нужные элементы.
2. Сохранить где-либо.
3. По таймеру брать очередной элемент и выполнять с ним какие хочешь действия.
Как-то так:
let elements = $('p');
let interval = setInterval(function() {
if (elements.length) {
$(elements.pop()).doSomething();
} else clearInterval(interval);
}, 2000);