Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый Сегодня, 02:19
Новичок на форуме
Отправить личное сообщение для safohubo Посмотреть профиль Найти все сообщения от safohubo
 
Регистрация: 26.06.2025
Сообщений: 3

Как первый параметр в функции может быть опциональным?
Наткнулся здесь:

https://developer.mozilla.org/en-US/...tabs/insertCSS

У функции два параметра, первый - опциональный int, второй - объект:
let inserting = browser.tabs.insertCSS(
  tabId,           // optional integer
  details          // object
)

Далее, приводится пример вызова где они передают только объект:
let insertingCSS = browser.tabs.insertCSS({ code: css });

Что здесь вообще происходит? Должно же быть как-то так:
insertCSS(undefined, { code: css })

В JS же нельзя первый параметр пропускать или нет?
Ответить с цитированием
  #2 (permalink)  
Старый Сегодня, 09:34
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,273

Сообщение от safohubo
В JS же нельзя первый параметр пропускать или нет?
Если ты второй параметр хочешь передать именно как второй - нужно что-то указать как первый.
Ответить с цитированием
  #3 (permalink)  
Старый Сегодня, 09:37
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,273

Сообщение от safohubo
Что здесь вообще происходит?
Нечто типа такого...

test(1, {tmp: 20})
test({test: 'Ok'})

// 
function test(v, o) {
	if (typeof v === 'object') {
		o = v
		v = 100
	}
	console.log(v, o)
}
Ответить с цитированием
  #4 (permalink)  
Старый Сегодня, 09:41
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,273

Количество аргументов можно учитывать...

test(1, {tmp: 20})
test({test: 'Ok'})

// 
function test(...arg) {
	let v = 100
	let o = arg[0]
	if (arg.length > 1) {
		v = arg[0]
		o = arg[1]
	}
	console.log(v, o)
}
Ответить с цитированием
  #5 (permalink)  
Старый Сегодня, 15:46
Новичок на форуме
Отправить личное сообщение для safohubo Посмотреть профиль Найти все сообщения от safohubo
 
Регистрация: 26.06.2025
Сообщений: 3

ksa,
понятно, спасибо! А это нормальная практика делать такие функции/апишки? Они же спокойно могли поменять аргументы местами, а так это вроде как вводит в заблуждение. Там конечно сказано, что параметр опциональный, но не увидев пример, я бы не понял, что его вообще можно опустить. Плюсом они усложнили логику функции на ровном месте. Не говоря о том что они вообще могли tabID запихнуть в объект details, там проблем с чередованием нет вообще.

Последний раз редактировалось safohubo, Сегодня в 15:56.
Ответить с цитированием
  #6 (permalink)  
Старый Сегодня, 16:59
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,273

Сообщение от safohubo
А это нормальная практика делать такие функции/апишки?
Например для тех же jQuery, Node.js это нормальная практика.

Сообщение от safohubo
они усложнили логику функции на ровном месте
Возможно конкретный пример и неудачный... Но на более удачных примерах это выглядит вполне нормальным.
Усложнение функции делают для удобства ее использования "конечным" программистам.
Это как бы расширяет возможности при использовании функций или методов...
Ответить с цитированием
  #7 (permalink)  
Старый Сегодня, 17:42
Новичок на форуме
Отправить личное сообщение для safohubo Посмотреть профиль Найти все сообщения от safohubo
 
Регистрация: 26.06.2025
Сообщений: 3

ksa,
понятно, спасибо за помощь!
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Номер свойства, как параметр функции BratKilla Элементы интерфейса 5 14.03.2014 11:08
Как вы относитесь к наркоманам? Maxmaxmaximus7 Оффтопик 7 05.02.2014 13:29
Как объединить 4 одинаковых функции Batyabest Общие вопросы Javascript 2 21.12.2013 22:53
Как при быстром многократном клике по кнопке обрабатывать только первый клик battrack jQuery 3 22.03.2012 10:47
способы организации кода melky Общие вопросы Javascript 17 01.10.2011 22:57