Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 03.12.2013, 03:05
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 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'а в каком-то браузере) - так и не допер что делает эта запятая)?
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #2 (permalink)  
Старый 03.12.2013, 03:16
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 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);


Насколько он оправдан?
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #3 (permalink)  
Старый 03.12.2013, 03:25
Аватар для Gozar
Отправить личное сообщение для Gozar Посмотреть профиль Найти все сообщения от Gozar
 
Регистрация: 07.06.2007
Сообщений: 7,504

Если сжимать код, могут быть проблемы. По крайней мере в 1 и 2 случае.
__________________
Последний раз редактировалось Gozar, Сегодня в 24:14.
Ответить с цитированием
  #4 (permalink)  
Старый 03.12.2013, 03:36
Профессор
Посмотреть профиль Найти все сообщения от Maxmaxmaximus3
 
Регистрация: 18.11.2013
Сообщений: 275

и вообще это ужасный стиль и не очевидный, никогда так не делай

Gozar, кот, как тебе мой новый FRP стайл?
Все что объявлено без var попадает в $scope. Все что приравнивается в скобочках воспринимается как ячейка. Круто?


Последний раз редактировалось Maxmaxmaximus3, 03.12.2013 в 03:38.
Ответить с цитированием
  #5 (permalink)  
Старый 03.12.2013, 03:51
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от Maxmaxmaximus3
и вообще это ужасный стиль и не очевидный, никогда так не делай
А помоему прикольный. Там все в одну строчку, причем довольно короткую. Знак || воспринимается прекрасно, скобочки небольшие, последний элемент взглядом улавливается сразу.

Мне нравится. Неуж-то так плохо?

Третий вариант нигде не встречал. Но помоему логичный, но смотрится жутко, особенно delete.

Maxmaxmaximus3, убейся, пожалуйста.
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #6 (permalink)  
Старый 03.12.2013, 05:04
Профессор
Посмотреть профиль Найти все сообщения от Maxmaxmaximus3
 
Регистрация: 18.11.2013
Сообщений: 275

Сообщение от danik.js
Maxmaxmaximus3, убейся, пожалуйста.
В смысле?
Ответить с цитированием
  #7 (permalink)  
Старый 03.12.2013, 13:09
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 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()
Ответить с цитированием
  #8 (permalink)  
Старый 03.12.2013, 13:18
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,217

Сообщение от danik.js
можно так писать?
Писать-то можно по-разному... Главное чтобы другим потом понятно было.
тут же ведь используют вот это

alert((1,2,3,4,5));

Вопрос только в целесообразности этого...

Сообщение от danik.js
нет ли проблем с запятой
Сама запятая тут не подведет...
Ответить с цитированием
  #9 (permalink)  
Старый 03.12.2013, 13:19
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 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);
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
  #10 (permalink)  
Старый 03.12.2013, 13:21
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,217

Сообщение от danik.js
так и не допер что делает эта запятая
Такой "набор" просто вернет последний элемент "перечня"...
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Тернарный оператор в цикле? 1Dmitry Элементы интерфейса 1 18.06.2013 16:54
Чем отличается составной оператор от литерала объекта? rgl Общие вопросы Javascript 10 26.02.2013 22:38
Оператор && и его не понимание volkovics Общие вопросы Javascript 9 24.05.2012 00:15
Как работает оператор new когда функция-конструктор что-то возвращает ? olek Общие вопросы Javascript 2 06.03.2011 12:17
Оператор "И" (and) - обозначение qwermjk Общие вопросы Javascript 5 07.10.2010 07:34