powered by simpleCommunicator - 2.0.48     © 2025 Programmizd 02
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / JS isset
25 сообщений из 115, страница 1 из 5
JS isset
    #40085639
FreeAdman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я так понял это невозможно.

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
function isset(v){ <--- вылетит исключение РАньше, ибо передали фуфловую переменную
	return typeof v !== 'undefined'
}

function isset(typeof v){ << работаеть такое не будет
	return v !== 'undefined'
}

//////////////////////////////////////////////////////////////////////////!!!!!!!!!!!!!!!!!!!!!!!!!!
function isset(v){
	return v !== 'undefined'
}

if( isset(typeof vvv112_ ) 'дуля и ничего более' <<<<---- всегда будет true!!!!




А что возможно? или везде пихать

if(typeof vvv !== 'undefined') if(typeof vvv !== 'undefined') if(typeof vvv !== 'undefined')
if(typeof vvv !== 'undefined') if(typeof vvv !== 'undefined') if(typeof vvv !== 'undefined')
if(typeof vvv !== 'undefined') if(typeof vvv !== 'undefined') if(typeof vvv !== 'undefined')
if(typeof vvv !== 'undefined') if(typeof vvv !== 'undefined') if(typeof vvv !== 'undefined')

???????????????????

Что это такое ?!
...
Рейтинг: 0 / 0
JS isset
    #40085643
FreeAdman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нашёл ответ этого конченого языка.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
if(isset(() => blavar)) // false

	function isset(accessor){
	    try {
    // Note we're seeing if the returned value of our function is not
    // undefined or null
    return accessor() !== undefined && accessor() !== null
  } catch (e) {
    // And we're able to catch the Error it would normally throw for
    // referencing a property of undefined
    return false
  }
	}
...
Рейтинг: 0 / 0
JS isset
    #40085646
FreeAdman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В опере 12 не работает пример выше.

Значит if(typeof vvv !== 'undefined') НАШЕ ВСЁ. Птьфу!
...
Рейтинг: 0 / 0
JS isset
    #40085701
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Столько боли...

FreeAdman , что именно хотел от параметра функции?
...
Рейтинг: 0 / 0
JS isset
    #40085702
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FreeAdman , ты для чего-то хочешь узнать определена ли переменная? Вероятно ты ПХПист...
Для чего такое нужно знать?

Есть мнение... (с)
Что ты пытаешься применить подход одного ЯП к решению проблем на JS. Так это не всегда проходит нормально.
Поскольку почти все ЯП имеют некоторый "синтаксис" для "своего" подхода или обхода неких ситуаций.
Т.ч. тянуть JS в сторону ПХП смысла имеет мало. Лучше таки в JS пользоваться подходами, которые используют в JS.
...
Рейтинг: 0 / 0
JS isset
    #40085727
FreeAdman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
krvsa, сорвался прост.

Вроде и отпуск, а руки с головой тянутся страдать. Всё забываю, что можно ничего не делать.

Да прост хотелось упростить проверку существования переменной и сделать более короткий и красивый вид
...
Рейтинг: 0 / 0
JS isset
    #40085732
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FreeAdman
хотелось упростить проверку существования переменной и сделать более короткий и красивый вид

Для чего именно проверяешь ее существование?
В JS есть несколько вариантов для определенных действий...

FreeAdman

Код: javascript
1.
if(typeof vvv !== 'undefined')


Это можно еще короче написать...

Код: javascript
1.
2.
3.
4.
5.
6.
let vvv
if (vvv !== undefined) {
	alert(1)
} else {
	alert(2)
}
...
Рейтинг: 0 / 0
JS isset
    #40085733
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В некоторых случаях вообще может хватить
Код: javascript
1.
if (!!vvv) alert('vvv - фолси')
...
Рейтинг: 0 / 0
JS isset
    #40085735
FreeAdman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
krvsa,

В старой Опере 12 такое не сработает ))

Хитрецы! Новые технологии мне тут советуют!

Код: sql
1.
2.
3.
4.
5.
function isset(v){
	return v !== "undefined"
}

if( isset(typeof vvv) )



Норм ?
...
Рейтинг: 0 / 0
JS isset
    #40085736
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FreeAdman
Норм ?

Если тебе isset более симпатичен - делай так...

Если у тебя "старые JS", тогда конечно не так весело... Я тут в этом деле немного избалован.
...
Рейтинг: 0 / 0
JS isset
    #40085738
FreeAdman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
krvsa, эксперимент показал, что если заведется на Опера 12, то заведется везде.

чудесного "let" там, ест-на, нема ))
...
Рейтинг: 0 / 0
JS isset
    #40085740
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FreeAdman
чудесного "let" там, ест-на, нема ))

Так дело не в let... Можно и с var.
Код: javascript
1.
2.
3.
4.
5.
6.
var vvv
if (vvv !== undefined) {
	alert(1)
} else {
	alert(2)
}


Т.е. чтобы такое работало переменная должна быть объявлена но не определена. Тогда такое сработает.
Так (без определения) работать не будет...
Код: javascript
1.
2.
3.
4.
5.
if (vvv !== undefined) {
	alert(1)
} else {
	alert(2)
}


Код: javascript
1.
Uncaught ReferenceError: vvv is not defined
...
Рейтинг: 0 / 0
JS isset
    #40085741
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FreeAdman , ты так и не написал зачем тебе нужно проверять определена переменная или нет...
...
Рейтинг: 0 / 0
JS isset
    #40085742
FreeAdman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
krvsa
FreeAdman , ты так и не написал зачем тебе нужно проверять определена переменная или нет...


Я больной перфекционист сказочник ))

а как быть, если есть func(param1, param2, param3)

и вот юзер может передавать параметры через раз типа

func(param1, null, param3)

надо эту ситуацию правильно обрабатывать. Надо тестить. console.log в помощь
...
Рейтинг: 0 / 0
JS isset
    #40085743
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FreeAdman
и вот юзер может передавать параметры через раз типа

Код: javascript
1.
func(param1, null, param3)



надо эту ситуацию правильно обрабатывать. Надо тестить. console.log в помощь

null это уже значение!
Проверяется просто
Код: javascript
1.
2.
3.
4.
5.
test(1, null)

function test(a, b, c) {
	if (b === null) alert('b у нас null')
}
...
Рейтинг: 0 / 0
JS isset
    #40085744
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С новым синтаксисом много проблем снимается сразу...

Код: javascript
1.
2.
3.
4.
5.
test(1, null)

function test(a, b, c = 'если не определили') {
	alert('c = ' + c)
}
...
Рейтинг: 0 / 0
JS isset
    #40085746
FreeAdman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
krvsa,

эт понятно :)

я к чему веду то. что может быть как underfined так и null

Но это уже аналог php-шной функции empty
...
Рейтинг: 0 / 0
JS isset
    #40085748
FreeAdman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ладненько.

Благодарю!
...
Рейтинг: 0 / 0
JS isset
    #40085750
krvsa
FreeAdman , ты для чего-то хочешь узнать определена ли переменная? Вероятно ты ПХПист...
Для чего такое нужно знать?

Есть мнение... (с)
Что ты пытаешься применить подход одного ЯП к решению проблем на JS. Так это не всегда проходит нормально.
Поскольку почти все ЯП имеют некоторый "синтаксис" для "своего" подхода или обхода неких ситуаций.
Т.ч. тянуть JS в сторону ПХП смысла имеет мало. Лучше таки в JS пользоваться подходами, которые используют в JS.

это называется "обёртка" - упрощение рутины
добро пожаловать в программирование ;)

FreeAdman
krvsa, эксперимент показал, что если заведется на Опера 12, то заведется везде.

пацанов с опера 12 мало и они всё равно ничего не купят
пусть страдают.

JS не говно, он простой способ обработки на стороне клиента, там никто не заморачивался с полноценным ЯП
там и ООП по верхам
...
Рейтинг: 0 / 0
JS isset
    #40085755
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FreeAdman
я к чему веду то. что может быть как underfined так и null

Если тебя не интересуют значения 0 и ''

Параметры (на старом JS) можно определять достаточно просто

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
test(1, null)

function test(a, b, c) {
	a = a || 'значение для a'
	b = b || 'значение для b'
	c = c || 'значение для c'
	alert(a + ' - ' + b + ' - ' + c)
}
...
Рейтинг: 0 / 0
JS isset
    #40085756
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa
Если тебя не интересуют значения 0 и ''

Так, если интересуют...

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
test(1, null)

function test(a, b, c) {
	if (a == undefined) a = 'значение для a'
	if (b == undefined) b = 'значение для b'
	if (c == undefined) c = 'значение для c'
	alert(a + ' - ' + b + ' - ' + c)
}
...
Рейтинг: 0 / 0
JS isset
    #40085786
FreeAdman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
krvsa,

Спасибо, добрый друг!
...
Рейтинг: 0 / 0
JS isset
    #40085800
а как же
FreeAdman
Код: javascript
1.
function isset(v){ <--- вылетит исключение РАньше, ибо передали фуфловую переменную

...
Рейтинг: 0 / 0
JS isset
    #40085878
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще, в javascript все переменные всегда определены. По умолчанию они имеют значение null.
...
Рейтинг: 0 / 0
JS isset
    #40085887
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShSerge
Вообще, в javascript все переменные всегда определены. По умолчанию они имеют значение null.

Возьмем букварь...
букварь Значение «null»
Специальное значение null не относится ни к одному из типов, описанных выше.

Оно формирует отдельный тип, который содержит только значение null:

let age = null;
В JavaScript null не является «ссылкой на несуществующий объект» или «нулевым указателем», как в некоторых других языках.

Это просто специальное значение, которое представляет собой «ничего», «пусто» или «значение неизвестно».

В приведённом выше коде указано, что значение переменной age неизвестно.

Значение «undefined»
Специальное значение undefined также стоит особняком. Оно формирует тип из самого себя так же, как и null.

Оно означает, что «значение не было присвоено».

Если переменная объявлена, но ей не присвоено никакого значения, то её значением будет undefined:

https://learn.javascript.ru/types#znachenie-null

Исходя из этого всегда считал что null нужно именно присваивать переменной... А при объявлении переменная получает значение undefined.
Если и объявления не было - получаем ошибку, переменная не объявлена.

Т.ч. про null какгбэ придется объяснить... Что значит "все переменные всегда определены. По умолчанию они имеют значение null".
Пример какой челе показать...
...
Рейтинг: 0 / 0
25 сообщений из 115, страница 1 из 5
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / JS isset
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]