Autor Zpráva
unlucky
Profil
ahoj, mam funkci se tremi parametry pri cemz treti je nepovinny. Chci, kdyby byla zadano hodnota tak by udelalo tohle jinak tamto.

zkousel jsem

function neco (a,b,c='nic')...


toto mi nejak nefunguje :P


edit: no nic, tak jsem nakonec pouzil podminku ==null :)
Darker
Profil
To co jsi zkoušel funguje v PHP.
V JS to musíš udělat takto:
function funkce(a,b){
 if(typeof a =="undefined")var a ="vychoziA";
 if(typeof a =="undefined")var a ="vychoziB";
 return a+b;
}

Nejsem si jistý tím var za if, ale asi by tam být mělo.

unlucky:
==null
Proměnná může být definovaná jako null.
unlucky
Profil
Darker:
diky za reakci, vyresil jsem to takhle
Predtim jsem tam daval pouze !=
nevim jestli tenhle nebo tvuj je lepsi

function neco(a,b,c){
if (c!==null){
fsdfd
}
}
Darker
Profil
Neexistuje důvod dávat dvě rovnítka. Moje řešení ber jako doporučené. Možná se ještě někdo vyjádří jinak.
_es
Profil
unlucky:
Ak nie je argument zadaný, tak má hodnotu undefined.
if(c !== undefined) {argument c bol predaný s inou hodnotou ako undefined}
Darker
Profil
_es:
To by nemělo fungovat. Ve firefoxu to tedy rozhodně fungovat nebude. Skus napsat
alert(cokoliv_co_neni_definovane==undefined)

Nic se nestane a vypíše se chyba
cokoliv_co_neni_definovane is not defined

Zatímco
alert(typeof cokoliv_co_neni_definovane=="undefined")

Alert vykřikne "true".
Chamurappi
Profil
Reaguji na Darkera:
Řeč byla o argumentu funkce, nikoliv o nedeklarované proměnné.
_es
Profil
Darker:
Skus napsat
alert(cokoliv_co_neni_definovane==undefined)
Ale argument funkcie, ktorý nebol zadaný, definovaný je a má hodnotu undefined.

unlucky:
Ďalšia možnosť:
if(arguments.length > 2) {boli zadané viac ako dva argumenty}
ShiraNai7
Profil
Darker:
Mi to teda vyhodí dialog s textem "true".
_es
Profil
ShiraNai7:
Viď [#7] Chamurappi.
Suta
Profil
Darker:
Nejsem si jistý tím var za if, ale asi by tam být mělo.

Definováním pojmenovaných argumentů dojde po zavolání funkce automaticky k vytvoření "lokální" proměnné, takže provádíš re-deklaraci již jednou definované proměnné.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: