Difference between decodeURIComponent and decodeURI

Различия в decodeURI и decodeURIComponent, в последнем нет исключений он декодирует все символы.
tt1 = encodeURI(" ; / ? : @ & = + $ , # ")
"%20;%20/%20?%20:%20@%20&%20=%20+%20$%20,%20#%20"
tt2 = encodeURIComponent(" ; / ? : @ & = + $ , # ")
"%20%3B%20%2F%20%3F%20%3A%20%40%20%26%20%3D%20%2B%20%24%20%2C%20%23%20"
tt3 = decodeURI(tt1)
" ; / ? : @ & = + $ , # "
tt4 = decodeURI(tt2)
" %3B %2F %3F %3A %40 %26 %3D %2B %24 %2C %23 "
tt5 = decodeURIComponent(tt1)
" ; / ? : @ & = + $ , # "
tt6 = decodeURIComponent(tt2)
" ; / ? : @ & = + $ , # "
const jschar js_uriReservedPlusPound_ucstr[] =
    {';', '/', '?', ':', '@', '&', '=', '+', '$', ',', '#', 0};

static JSBool
str_decodeURI(JSContext *cx, uintN argc, jsval *vp) {
    JSString *str;

    str = ArgToRootedString(cx, argc, vp, 0);
    if (!str)
        return JS_FALSE;
    return Decode(cx, str, js_uriReservedPlusPound_ucstr, vp);
}

static JSBool
str_decodeURI_Component(JSContext *cx, uintN argc, jsval *vp) {
    JSString *str;

    str = ArgToRootedString(cx, argc, vp, 0);
    if (!str)
        return JS_FALSE;
    return Decode(cx, str, js_empty_ucstr, vp);
}

Web Worker многопоточность в JavaScript

Рассчитаем число Pi в 5000 знаков воспользовавшись Web Worker, setTimeout, и без использования разбора очереди setTimeout или многопоточности(Multithreading) Web Worker, цикл в основном (и единственном) потоке JavaScript. Сравним время выполнения, ощущения по блокировки графического интерфейса (UI). Воспользуемся формулой Джона Мачайна John Machin
π=16arctan(15)4arctan(1239)
arctanx=xx33+x55x77+x99
Web WorkersetInterval(0) (на каждую итерацию)цикл while
Pi
Код под капотом.
Мои итоги, плюс Web Worker? работа в отдельном потоке, никакого влияния на основной поток, отсутствие задержки setTimeout, на каждый вызов порядка 10мс, и это если в это время очередь не занята еще чем-либо, например, визуальными эффектами jQuery, да и при setTimeout приходится модифицировать код задачи, итерации делить по вызовам setTimeout. Минус, хотя это и не минус, по другому быть и не может, отсутствие доступа к не потокобезопасным ресурсам DOM, window, document, parent. Где же использовать практически, однооконные веб-приложения с некими относительно тяжелыми расчетами, мне решать такую задачу пока не приходилось.
И еще, FF тормоз, см. скрин, все три теста на одной машинке.

Варианты тестов на разных браузерах и машинках. Google Chrome Internet Explorer Mozila Firefox

IEEE 754 and browsers, toFixed or toPrecission

Все числа в JavaScript, как целые так и дробные, имеют тип Number и хранятся в 64-битном формате IEEE-754, также известном как «double precision»
Так должно быть, но есть нюансы, отличия в итогах, возьмем простой алгоритм for (n=0.5; n<10; n+=1) console.log(n+0.05, (n+0.05).toFixed(1));
Google Chrome Версия 51.0.2704.103 Internet Explorer 11 Версия 11.0.9600.18314 Ваш браузер
+=0.05toFixed(1)toFixed(20) +=0.05toFixed(1)toFixed(20) +=0.05toFixed(1)toFixed(20)
0.550.60.55000000000000004441 0.550.60.55000000000000000000
1.551.61.55000000000000004441 1.551.61.55000000000000000000
2.552.52.54999999999999982236 2.552.62.55000000000000000000
3.553.53.54999999999999982236 3.553.63.55000000000000000000
4.554.54.54999999999999982236 4.554.64.55000000000000000000
5.555.55.54999999999999982236 5.555.65.55000000000000000000
6.556.56.54999999999999982236 6.556.66.55000000000000000000
7.557.57.54999999999999982236 7.557.67.55000000000000000000
8.558.68.55000000000000071054 8.558.68.55000000000000000000
9.559.69.55000000000000071054 9.559.69.55000000000000000000
Тут, конечно, под большим вопросом где подкрасить красным, Google Chrome выводит честные данные, а ИЕ то что нам нужно :-) Хотя и в ИЕ и в Хроме (тут и ИЕ соблюдает стандарты)
x = 0.1 + 0.2
0.30000000000000004
Кстати, в PHP результат будет 0.3, но это не заслуга, просто у него точность по умолчанию 14 знаков. Дабы уровнять и скорректировать результаты, можем использовать такую замену toFixed, позаимствовал у Angular
function toFixed(number, fractionSize) {
    return +(Math.round(+(number.toString() + 'e' + fractionSize)).toString() + 'e' + -fractionSize);
}

Create an object property from a variable value in JavaScript

Создаем объект со свойством равным значению переменной
switch(_this.data(‘act’)) {
	case ‘setfilter’:
		$.ajax({ url: _this.prop(‘href’), dataType: «json», type: «POST»,
		 data: (datas = $.extend({}, _this.data()), $(‘#performedwork input’).map(function(i,o){ return ( t={}, t[$(o).prop(‘name’)]=$(o).val(), t ); }).each(function(i,o){ $.extend(datas, o) }), datas ),
		 success: function( d ) {
			if (d.error.length) {
				bootbox.dialog({ title: ‘<div class="text-danger">Ошибка</div>‘, message: ‘<div class="text-danger">«</div>‘, onShown: function() { this.find(‘.bootbox-body > div’).text(d.error); } });
			} else {