Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Проверка на наличие переменной (https://javascript.ru/forum/misc/57596-proverka-na-nalichie-peremennojj.html)

javaQest 11.08.2015 16:56

Цитата:

Сообщение от vuler
Или лучше объявлять их динамически, кода понадобятся

кто тебе в js запрещает динамически объявлять переменные? Ты о чем вообше говоришь? В твоем случае не объявления, а обращение к несуществующему слоту.

KosBeg 11.08.2015 16:59

итог один - нужно проверять два раза :)
function full_null(elem){//Проверка на полный ноль. отстутсвие или несуществование.
	if (elem=='undefined' || elem==null || elem==""){
		return true;
	}else return false;
}
if (*!*full_null(this.form.rulers.format) && full_null(this.form.rulers.format[this.name])*/!*)
			this.rulers.format=this.form.rulers.format[this.name];

javaQest 11.08.2015 17:00

vuler,
То есть, ты хочешь сказать, что если я, допустим пишу
foo.bar.baz=1

и при этом foo не существует, все эти объекты будут созданы?

vuler 11.08.2015 17:09

Цитата:

Сообщение от javaQest (Сообщение 383653)
кто тебе в js запрещает динамически объявлять переменные? Ты о чем вообше говоришь? В твоем случае не объявления, а обращение к несуществующему слоту.

Да никто не запрещает, но на один уровень.
только вот так js не сможет :)
if ($rrr->ssss->form_rulersq['sss']) {
			
			}else{
				$rrr->ssss->form_rulersq['sss']++;
				var_dump($rrr->ssss->form_rulersq['sss']);//1
			}


Цитата:

и при этом foo не существует, все эти объекты будут созданы?
Да php создает всю цепочку обхектов, если с конечным элементом что-то сделать. А если просто выполнить проверку на существование, никаких объектов не создаст. Просто скажет, что такой цепочки объектов нет и все.

KosBeg - ну только так и остается. Все-таки гибкости JS языку не хватает.

javaQest 11.08.2015 17:11

Цитата:

Сообщение от vuler
Да php создает всю цепочку обхектов,

круто.

javaQest 11.08.2015 22:05

Цитата:

Сообщение от vuler
Да php создает всю цепочку обхектов, если с конечным элементом что-то сделать. А если просто выполнить проверку на существование, никаких объектов не создаст. Просто скажет, что такой цепочки объектов нет и все.

Слушай а ты ничо не путаешь? я у посонов поспрашал, говорят, что так нельзя.

vuler 11.08.2015 22:22

Цитата:

Сообщение от javaQest (Сообщение 383748)
Слушай а ты ничо не путаешь? я у посонов поспрашал, говорят, что так нельзя.

Да нет, не путаю.Пусть проверят код
if ($jjjd->dfdf->dfsdfs->fdsfdf){
	
}else{
	var_dump($jjjd);//NULL
	$jjjd->dfdf->dfsdfs->fdsfdf++;
	var_dump($jjjd);//object(stdClass)#2 (1) { ["dfdf"]=> object(stdClass)#3 (1) { ["dfsdfs"]=> object(stdClass)#4 (1) { ["fdsfdf"]=> int(1) } } } 
}
die();


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