Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как вы считаете правильнее? (https://javascript.ru/forum/misc/55823-kak-vy-schitaete-pravilnee.html)

Nikolay256 15.05.2015 20:56

Как вы считаете правильнее?
 
function lb_confirm(options) {
options = (typeof(options)==='object' ? options:{});
}

или

function lb_confirm(options) {
options = options || {};
}

Я лично за вариант 2, так как считаю №1 лишней смысловой нагрузкой
Те, кто будет использовать данную ф-ю в дальнейшем, должны знать, что они передают в нее.

ruslan_mart 15.05.2015 21:12

options = options || {};

nerv_ 15.05.2015 21:41

правильнее es6

Nikolay256 15.05.2015 21:46

function multiply(a, b = 1) {}
нативный js так не умеет

fuckJS 15.05.2015 22:05

Цитата:

Сообщение от Nikolay256
нативный js так не умеет

Да, а если бы это было нужно, было бы совсем хорошо.

fuckJS 15.05.2015 22:17

Цитата:

Сообщение от Nikolay256
function multiply(a, b = 1) {}

Кстати, этот подход, насколько я понимаю, значительно урезает гибкость
Object.prototype.optional=100
f=function(optional){with(this) return optional||"fuck"}

console.log(f())

delete Object.prototype.optional

console.log(f())

console.log(f(200))


//>>>> 100
//>>>> fuck
//>>>> 200

Safort 15.05.2015 22:25

fuckJS,
Цитата:

Кстати, этот подход, насколько я понимаю, значительно урезает гибкость
Каким образом?

fuckJS 15.05.2015 22:57

Цитата:

Сообщение от Safort
Каким образом?

Так я же пример привел, из него разве не видно? Выражение function(opt=1){...} всегда будет перекрывать. То есть, при отсутствии аргумента у тебя будет всегда дефолтный, независимо от того, какому объекту ты отсылаешь сообщение, и есть ли у него это свойство. Насколько я понял из описания, может ошибаюсь.

Nikolay256 15.05.2015 23:09

optional=100
f=function(optional){with(this) return optional||"fuck"}
console.log(f())

так по проще. тут ты делаешь глобальную область видимости приоритетнее локальной, в которой переменная option хранит undefined
на мой взгляд это извращение и так делать не стоит

fuckJS 15.05.2015 23:13

Цитата:

Сообщение от Nikolay256
глобальную область видимости

глобальная область тут вообще не при чем. Там свойство объекта приоритетней, любого объекта, не обязательно верхнего.


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