Оператор запятая. Не возбраняется?
Короче, можно так писать?
this.getElement = function() {
return this.$element || (this.$init(), this.$element);
};
Этот же код в традиционном стиле:
this.getElement = function() {
if (!this.$element)
this.$init();
return this.$element;
};
Какой вариант лучше и нет ли проблем с запятой (где-то видел запятую как хак для установки scope чтоли (для eval'а в каком-то браузере) - так и не допер что делает эта запятая)? |
И еще такой вариант:
function Bla() {
this.getElement = function() {
this.$init();
delete this.getElement;
return this.getElement();
};
}
(function(){
this.$init = function() {
this.$element = document.createElement("div");
};
this.getElement = function() {
return this.$element;
};
}).call(Bla.prototype);
Насколько он оправдан? |
Если сжимать код, могут быть проблемы. По крайней мере в 1 и 2 случае.
|
и вообще это ужасный стиль и не очевидный, никогда так не делай
Gozar, кот, как тебе мой новый FRP стайл? Все что объявлено без var попадает в $scope. Все что приравнивается в скобочках воспринимается как ячейка. Круто? ![]() |
Цитата:
Мне нравится. Неуж-то так плохо? Третий вариант нигде не встречал. Но помоему логичный, но смотрится жутко, особенно delete. Maxmaxmaximus3, убейся, пожалуйста. |
Цитата:
|
Цитата:
Цитата:
alert(function() {
return 0 || ('a', 'b');
}());
alert(function() {
return 1 || ('a', 'b');
}());
Очевидно что нет. Цитата:
this.$element || this.$init() |
Цитата:
тут же ведь используют вот это alert((1,2,3,4,5)); Вопрос только в целесообразности этого... ;) Цитата:
|
Цитата:
function bar() {console.log('foo'); return 'foo';}
function foo() {console.log('bar'); return 'bar';}
var x = (bar(), foo());
alert(x);
|
Цитата:
|
Цитата:
|
Цитата:
Много в каких языках могут применяться конструкции ну ооочень особенные! Во только оправдывает их повсеместное использование. Т.о. даже новички, не понимая их смысл, но зная "конечное" назначение применяют их правильно и к месту... :) Может так будет и с запятой? Если начать ее применять всем поголовно для неких стандартных ситуаций... :D |
Цитата:
Это-то в купе и начинают использовать. Т.е. выполнить последовательность выражений и вернуть результат последнего... |
Например вот это
function test(Val) {
Val=Val||1;
};
Считается "стандартной" обработкой параметров функции, дабы придать им значение "по умолчанию"... А это <элемент>=<проверка_на_существование_элемента>||(<инициализация_элемента>,<элемент_по_умолчанию>); кагбе "расширение" первой конструкции. :) |
Цитата:
http://stackoverflow.com/questions/9...-in-javascript Кажется теперь понял тот трюк. Цитата:
Суть в том, что изначально this.$element = null, и создаться он должен только при первом обращении к нему. Для этого нужно вызвать метод this.$init(). Причем $init() не должен ничего возвращать. Есть идеи реализовать это иначе? |
Цитата:
По-мне так можно эту конструкцию просто добавить в "методическую копилочку" и просто использовать, показывая как можно большему количеству людей. Так она будет обще понятна... |
Цитата:
if (!this.$element) {
this.$init();
}
return this.$element;
|
Цитата:
|
Цитата:
|
Обычно так пишу, понятно и жмется
if (!this.$element) {
this.$init();
}
return this.$element;
так реже, ибо немножко путает) return this.$element || this.$div; |
Законтрибьютил свой код. Сказали лучше исправить. Предложили нарушить это условие (это условие вобще придумал я):
Цитата:
|
Цитата:
!this.$element && this.$init(); |
| Часовой пояс GMT +3, время: 08:19. |