edu378: Я никак не могу понять, что вы хотите узнать.
Есть бинарный оператор тильда (~) он меняет в 32-битовом целом числе все биты на противоположные. Полученное 32-битное целое число интерпетируется JS-ом так, как описано в википедии. Поэтому получается, что ~9 === -10.
Как можно написать var s = new String(s)?
Это не считая того, что в JS не нужно создавать объекты для примитивных типов. Нужно просто писать var s = "";