webForumDet fria alternativet

standardvärde för funktionsargument

JavaScript

8 svar · 348 visningar · startad av M@rtin

Medlem sedan dec. 19992 085 inlägg
Frågan#1

Hur sätter man default values på funktionsargument i javascript?

typ function test(var="bla")

så att variabeln var får värder "bla" om man anropat funktionen utan argument.

Medlem sedan maj 200010 687 inlägg
#2

Är ganska säker på att det inte går. Men man kan skriva så här:

function foo(bar)
{
	if (bar == null) bar = 123;
	
	alert(bar);
}
Medlem sedan dec. 19992 085 inlägg
#3

Ah ja det funkade ju faktiskt, trodde inte de accepterade att man inte skickade med argument.

Tycker dock att det är lite dåligt att det inte går på ett snyggare sätt :/

Medlem sedan aug. 20039 340 inlägg
#4

Eriks exempel ska egentligen inte funka. Detta är teoretiskt sett ett mer korrekt sätt att gör detta på:

function foo(bar)
{
	if (typeof bar == "undefined") bar = 123;
	
	alert(bar);
}
Medlem sedan dec. 19992 085 inlägg
#5

Okej, kör på undefined istället då :)

Medlem sedan aug. 20039 340 inlägg
#6

M@rtin skrev:

Okej, kör på undefined istället då :)

Och glöm inte typeof före.

Medlem sedan juni 200032 967 inlägg
#7

nitro2k01 skrev:

M@rtin skrev:

Okej, kör på undefined istället då :)

Och glöm inte typeof före.

Borde det inte vara typeof(bar) istället för typeof bar?

Medlem sedan aug. 20039 340 inlägg
#8

@nders skrev:

nitro2k01 skrev:

M@rtin skrev:

Okej, kör på undefined istället då :)

Och glöm inte typeof före.

Borde det inte vara typeof(bar) istället för typeof bar?

Nej! Det behövs inte, eftersom typeof är en unär operator, som !, ~, ++ och --.
Men det skadar förstås inte, lika lite som det skadar att skriva t ex y=(5)+(x);
För övrigt tar typeof minsta möjliga scope, så man behöver inte skriva if ((typeof bar) == "undefined") heller.

Medlem sedan juni 200032 967 inlägg
#9

okay, tack, nitro! :)

259 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)