Объясните пожалуйста конструкцию
Что вернет функция, если она имеет такую конструкцию:
function a(e){ ........ return b, c, d } То есть, если возвращаемые значения указаны через запятую, что она вернет? Столкнулся с такой конструкцией первый раз. Вот полный пример такой функции: function getHref(e) { if (!e) return !1; var t = !1; return e.getAttribute && (t = e.getAttribute("data-href") || e.getAttribute("href")), t || (e.pathname ? t = e.pathname + e.search + e.hash : tag(e) || (t = e)), t || !1 } |
Цитата:
Т.к. запятая выполняет оба операнда (слева направо) и возвращает значение второго оператора. Т.е. сначала запятая отбросит b и вернет c, затем отбросит с и вернет d; |
Цитата:
А какой смысл в такой конструкции? Тогда логичнее наверно писать: function(){ ... b, c; return d } Цитата:
|
Urfin, может имеет смысл учебник прочитать? Про запятую вот хорошая статья — http://habrahabr.ru/post/116827/
|
Decode, ок, спасибо. Искал здесь в справочнике, ответа не нашел, буду читать учебник.
Но суть я пока не понял что делает эта функция. |
Decode спасибо за ссылку.
Все понял, разобрался. |
Urfin, вам еще таблица приоритетов операторов понадобиться.
|
Цитата:
Короче слышали фразу "свистелки и перделки" - оно самое. |
Цитата:
Но сайт на этом коде работает очень не плохо. Это с мобильного Вконтаке функция. |
Во-во, не удивлюсь что программистами там пашуть волонтеры с того же самого вконтакта, то есть сами на тех же веществах, откуда и стиль.
Цитата:
Потому что грядет байткод - покайтесь! |
Квази-рациональное объяснение что !1 занимает ажно в два раза меньше места чем false рушится об null по умолчанию.
|
Цитата:
Функция в заглав посте после деобфускатора так выглядит. Тот же jquery.min точно такие же конструкции содержит. Так что в реале код наверно более читабелен и содержит true и false как и полагается. |
Это не обфускатор, а минимайзер. У меня такой есть, ничего он там не трогает. Обфускатор был бы заметен вообще тотально и фундаментально. Не надо выгораживать хуйдожников - их обидеть может каждый и я не погнушаюсь :)
|
Цитата:
Вот как выглядят функции в jquery.min.js и в jquery.js для сравнения. isPlainObject: function (a) { return "object" !== n.type(a) || a.nodeType || n.isWindow(a) ? !1 : a.constructor && !j.call(a.constructor.prototype, "isPrototypeOf") ? !1 : !0 }, isEmptyObject: function (a) { var b; for (b in a) return !1; return !0 }, type: function (a) { return null == a ? a + "" : "object" == typeof a || "function" == typeof a ? h[i.call(a)] || "object" : typeof a }, isPlainObject: function( obj ) { // Not plain objects: // - Any object or value whose internal [[Class]] property is not "[object Object]" // - DOM nodes // - window if ( jQuery.type( obj ) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { return false; } if ( obj.constructor && !hasOwn.call( obj.constructor.prototype, "isPrototypeOf" ) ) { return false; } // If the function hasn't returned already, we're confident that // |obj| is a plain object, created by {} or constructed with new Object return true; }, isEmptyObject: function( obj ) { var name; for ( name in obj ) { return false; } return true; }, type: function( obj ) { if ( obj == null ) { return obj + ""; } // Support: Android<4.0, iOS<6 (functionish RegExp) return typeof obj === "object" || typeof obj === "function" ? class2type[ toString.call(obj) ] || "object" : typeof obj; }, Так что в реальном виде скрипт точно хорошо читаем и у контакта тоже. Художеств в код добавляет минимайзер, который оптимизирует как условные выражения, так и переменные и true, false. |
Цитата:
Забираю свой наезд. Не знал. Ну то есть я знал про обфускаторы, но было такое мнение подтвержденное некоторыми примерами, что они городят бред несусветный. А тут все даже по-человечески остается, и более художественно. Значит хуйдожники - авторы обфускатора. :) Кстати, а где можно скачать такой? Или он как та гуглевая платформа для дизайн-тайм интегрирован с жикверей? |
Цитата:
Суровые там правила: Цитата:
=== Нет, я имел ввиду скачать, то есть на комп, на php лучше, чтоб сразу все обновлялось. |
Часовой пояс GMT +3, время: 17:37. |