Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Объясните пожалуйста конструкцию (https://javascript.ru/forum/misc/57032-obyasnite-pozhalujjsta-konstrukciyu.html)

kostyanet 16.07.2015 17:15

Квази-рациональное объяснение что !1 занимает ажно в два раза меньше места чем false рушится об null по умолчанию.

Urfin 16.07.2015 17:31

Цитата:

Сообщение от kostyanet (Сообщение 380020)
Квази-рациональное объяснение что !1 занимает ажно в два раза меньше места чем false рушится об null по умолчанию.

!1 и !0 в код вставляет обфускатор.
Функция в заглав посте после деобфускатора так выглядит.
Тот же jquery.min точно такие же конструкции содержит.

Так что в реале код наверно более читабелен и содержит true и false как и полагается.

kostyanet 16.07.2015 18:25

Это не обфускатор, а минимайзер. У меня такой есть, ничего он там не трогает. Обфускатор был бы заметен вообще тотально и фундаментально. Не надо выгораживать хуйдожников - их обидеть может каждый и я не погнушаюсь :)

Urfin 16.07.2015 23:24

Цитата:

Сообщение от kostyanet
Это не обфускатор, а минимайзер. У меня такой есть, ничего он там не трогает. Обфускатор был бы заметен вообще тотально и фундаментально. Не надо выгораживать хуйдожников


Вот как выглядят функции в 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.

kostyanet 17.07.2015 06:15

Цитата:

Сообщение от Urfin
Вот как выглядят функции в jquery.min.js и в jquery.js для сравнения.


Забираю свой наезд. Не знал.

Ну то есть я знал про обфускаторы, но было такое мнение подтвержденное некоторыми примерами, что они городят бред несусветный. А тут все даже по-человечески остается, и более художественно.

Значит хуйдожники - авторы обфускатора. :)

Кстати, а где можно скачать такой? Или он как та гуглевая платформа для дизайн-тайм интегрирован с жикверей?

kostyanet 17.07.2015 10:19

Цитата:

Сообщение от Rise
Closure Compiler Service


Суровые там правила:

Цитата:

JSC_WRONG_ARGUMENT_COUNT: Function parseInt: called with 1 argument(s). Function requires at least 2 argument(s) and no more than 2 argument(s). at line 18 character 8
return parseInt(v).toFixed(0).replace(/\d(?=(\d{3})+$)/g, '$& ')+c;

===

Нет, я имел ввиду скачать, то есть на комп, на php лучше, чтоб сразу все обновлялось.


Часовой пояс GMT +3, время: 06:58.