Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
i18n (только вот i18n работает и будет работать как надо без багов). Где нужно было применить вот эту библиотеку, на каком проекте? Очень хотелось бы знать <a href='...'>this_is_cancel_link</a>
где this_is_cancel_link — это ключ, который потом можно будет перевести с помощью вашей библиотеки и готового словаря.arrParams instanceof Array
if (typeof Array.isArray != 'function')
Array.isArray = function(value){
return Object.prototype.toString.call(value) === '[object Array]';
}
hash_rebuild=function hash_rebuild(){
...
LANG_HASH[prop].replace(/%(\d+)/g,function rep(a,b){return params[b]||"";})
...
get:function get(strProp){
switch(typeof data){
default:
return;
case "string":
LANG_PROPS_TO_UPDATE[data]=1;
break;
case "object":
lang_mixer(LANG_PROPS_TO_UPDATE,data);
}
if("v"=="\v"){
.. какие то хаки для каких то браузеров
}
// для старых браузер не имеющих реализации indexOf для массивов
if (typeof Array.prototype.indexOf != 'function')
Array.prototype.indexOf = function(value, offset){
offset = parseInt(offset);
for (var i = offset > 0 ? offset : 0, l = this.length; i < l; i++)
if (this[i] === value)
return i;
return -1;
};
if (document.body.contains(node))
alert('node находится внутри document.body');
if (typeof Node.prototype.contains != 'function')
Node.prototype.contains = function(node){
return !!(this.compareDocumentPosition(node) & this.POSITION_CONTAINED_BY)
}
if((LANG_UPDATE_LAST%10)&&(new Date()-date>50))
return;
function lang_set(node, langKey, params){
var propName = params[0];
var newValue = langKey in LANG_HASH
? LANG_HASH[langKey].replace(/%(\d+)/g, function(a, b){return params[b]||""})
: "#" + prop + (params.length > 1 ? "(" + params.slice(1) + ")" : "");
if (node[propName] != newValue)
node[propName] = newValue;
};
(function init() {
var f = function f() {
alert(f);
},
z = f;
f = 1;
alert(f);
z();
})();В таком случае внутри функции f переменная f не будет замыканием.3. Почитайте, что такое strict mode. Если мне вдруг придётся сделать рекурсивную функцию, то с помощью arguments.callee я не смогу обратиться к текущей анонимной функции.
(function(){
function factorial(n){
if (n <= 1) return 1;
return n * factorial(n - 1);
}
function factorial5(){
return factorial(5);
}
...
})()
Во-вторых, при отладке я сразу же буду видеть по именам в стеке вызовов, где произошла ошибка. Это, кстати, для меня и есть главная причина писать имена.

Динамический перевод страницы на другой язык