
03.12.2013, 03:05
|
 |
Профессор
|
|
Регистрация: 11.09.2010
Сообщений: 8,804
|
|
|
Оператор запятая. Не возбраняется?
Короче, можно так писать?
this.getElement = function() {
return this.$element || (this.$init(), this.$element);
};
Этот же код в традиционном стиле:
this.getElement = function() {
if (!this.$element)
this.$init();
return this.$element;
};
Какой вариант лучше и нет ли проблем с запятой (где-то видел запятую как хак для установки scope чтоли (для eval'а в каком-то браузере) - так и не допер что делает эта запятая)?
__________________
В личку только с интересными предложениями
|
|

03.12.2013, 03:16
|
 |
Профессор
|
|
Регистрация: 11.09.2010
Сообщений: 8,804
|
|
И еще такой вариант:
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);
Насколько он оправдан?
__________________
В личку только с интересными предложениями
|
|

03.12.2013, 03:25
|
 |
猫
|
|
Регистрация: 07.06.2007
Сообщений: 7,504
|
|
|
Если сжимать код, могут быть проблемы. По крайней мере в 1 и 2 случае.
__________________
Последний раз редактировалось Gozar, Сегодня в 24:14.
|
|

03.12.2013, 03:36
|
|
Профессор
|
|
Регистрация: 18.11.2013
Сообщений: 275
|
|
и вообще это ужасный стиль и не очевидный, никогда так не делай
Gozar, кот, как тебе мой новый FRP стайл?
Все что объявлено без var попадает в $scope. Все что приравнивается в скобочках воспринимается как ячейка. Круто?

Последний раз редактировалось Maxmaxmaximus3, 03.12.2013 в 03:38.
|
|

03.12.2013, 03:51
|
 |
Профессор
|
|
Регистрация: 11.09.2010
Сообщений: 8,804
|
|
|
Сообщение от Maxmaxmaximus3
|
|
и вообще это ужасный стиль и не очевидный, никогда так не делай
|
А помоему прикольный. Там все в одну строчку, причем довольно короткую. Знак || воспринимается прекрасно, скобочки небольшие, последний элемент взглядом улавливается сразу.
Мне нравится. Неуж-то так плохо?
Третий вариант нигде не встречал. Но помоему логичный, но смотрится жутко, особенно delete.
Maxmaxmaximus3, убейся, пожалуйста.
__________________
В личку только с интересными предложениями
|
|

03.12.2013, 05:04
|
|
Профессор
|
|
Регистрация: 18.11.2013
Сообщений: 275
|
|
|
Сообщение от danik.js
|
|
Maxmaxmaximus3, убейся, пожалуйста.
|
В смысле?
|
|

03.12.2013, 13:09
|
|
Особый гость
|
|
Регистрация: 02.04.2010
Сообщений: 4,260
|
|
|
Сообщение от danik.js
|
|
return this.$element || (this.$init(), this.$element);
|
|
Сообщение от danik.js
|
|
Короче, можно так писать?
|
alert(function() {
return 0 || ('a', 'b');
}());
alert(function() {
return 1 || ('a', 'b');
}());
Очевидно что нет.
|
Сообщение от danik.js
|
|
Какой вариант лучше
|
this.$element || this.$init()
|
|

03.12.2013, 13:18
|
 |
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,304
|
|
|
Сообщение от danik.js
|
|
можно так писать?
|
Писать-то можно по-разному...  Главное чтобы другим потом понятно было.
тут же ведь используют вот это
alert((1,2,3,4,5));
Вопрос только в целесообразности этого...
|
Сообщение от danik.js
|
|
нет ли проблем с запятой
|
Сама запятая тут не подведет... 
|
|

03.12.2013, 13:19
|
 |
junior
|
|
Регистрация: 29.11.2011
Сообщений: 3,924
|
|
|
Сообщение от danik.js
|
|
Короче, можно так писать?
|
если хочешь себя запутать, то пиши
function bar() {console.log('foo'); return 'foo';}
function foo() {console.log('bar'); return 'bar';}
var x = (bar(), foo());
alert(x);
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
|
|

03.12.2013, 13:21
|
 |
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,304
|
|
|
Сообщение от danik.js
|
|
так и не допер что делает эта запятая
|
Такой "набор" просто вернет последний элемент "перечня"...
|
|
|
|