Как вы считаете правильнее?
function lb_confirm(options) {
options = (typeof(options)==='object' ? options:{}); } или function lb_confirm(options) { options = options || {}; } Я лично за вариант 2, так как считаю №1 лишней смысловой нагрузкой Те, кто будет использовать данную ф-ю в дальнейшем, должны знать, что они передают в нее. |
options = options || {}; |
|
function multiply(a, b = 1) {}
нативный js так не умеет |
Цитата:
|
Цитата:
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 |
fuckJS,
Цитата:
|
Цитата:
|
optional=100
f=function(optional){with(this) return optional||"fuck"} console.log(f()) так по проще. тут ты делаешь глобальную область видимости приоритетнее локальной, в которой переменная option хранит undefined на мой взгляд это извращение и так делать не стоит |
Цитата:
|
в данном случае this это объект window. Да, это понятно. Спасибо, что поправил.
|
Цитата:
|
Цитата:
|
fuckJS, забудь про with, ибо в стрикте он всё равно не работает.
|
typeof null === typeof {} === 'object' - в этом случае ты рискуешь впоследствии обратиться к null, как к объекту и при этом получить ошибку
С другой стороны options = 1 , options ? options : {} тоже может дать неожиданный результат, если требуется объект с ограниченным набором возможных полей... обычно так бывает в универсальных методах, где объекты, например, копируются в цикле, а не по полям. Ну и остается риск перетереть поведение всего типа, если обращаешься где-нибудь к прототипу этого объекта. Я подобную ошибку случайно нашел в весьма крупном проекте, причем эта ошибка проявлялась только в IE и потому была трудно уловима. А ведь из-за нее мог грохнуться пользовательский интерфейс... Я всегда делаю комплексную проверку typeof options === typeof {} && options ? options : {} - в этом случае всегда получишь объект. |
Цитата:
|
Цитата:
Цитата:
|
Цитата:
Цитата:
alert(typeof null == "object"); |
Цитата:
|
Erolast,
Цитата:
|
Цитата:
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
|
nerv_, Aetae,
ребят, не тратьте время) Он либо тролль, либо просто не понимает о чём речь(даже после подробного описания). |
Цитата:
иди в доту рубись |
Nikolay256, шансы на то что стандарт кардинально перепилят не велики. И даже так я лично не пожалею о времени потраченном на познание нового. "Нужно бежать со всех ног, чтобы только оставаться на месте."
|
Цитата:
Я еще стараюсь тянуть решения для своих разработок под ie 7, а сколько времени после, мне этот костыль потребуется в свои разработки вставлять? В общем, это только мое мнение, я никому его не навязываю, и уважаю чужое мнение. |
Цитата:
И кстати, не просто typeof null == 'object', а typeof null === 'object'. Просто лично я не использую сравнение со строкой из-за паранойи... а вдруг в каком-нибудь тупом браузере будет не 'object', а 'Object' или 'OBJECT'... Тогда и проверка без учета типа провалится... Но это скорее всего именно паранойя... дождемся Спартанца из десятки)))) |
Цитата:
Цитата:
Цитата:
|
Цитата:
|
Цитата:
Цитата:
|
Цитата:
только это считаю не совсем правельным(по идее при результате должен быть boolean), так php тоже считает. Цитата:
|
Часовой пояс GMT +3, время: 00:21. |