Avatar billede razmuz_dk Nybegynder
31. marts 2005 - 16:23 Der er 13 kommentarer og
1 løsning

default værdier i en funktions variabler

Hejsa,

I PHP kan jeg skrive således
<?php
  function myFunction($var="default_value") {
    print $var;
  }
  myFunction();
?>

Den vil prøve "default_value", selvom myFunction ikke "fodres" med noget i (). Den vælger altså "default_value" fordi den kan se at $var er tom.

Jeg har prøvet med samme syntax i javascript, men jeg kan ikke få det til at du. Hvordan gør man det tilsvarende i javascript?

mvh. Rasmus
Avatar billede barklund Nybegynder
31. marts 2005 - 16:31 #1
Du skal lave det manuelt:

function openURL(page,width,height) {
  if (height === undefined) height = 300;
  if (width === undefined) width = 300;
  window.open(page,'pop','height='+height+',width='+width);
}

For example. :)

--
Morten Barklund
Avatar billede razmuz_dk Nybegynder
31. marts 2005 - 16:38 #2
Kan det være rigtigt? :o| Er du sikker? eller ska jeg lige lade spørgsmålet stå lidt.. :)
Avatar billede barklund Nybegynder
31. marts 2005 - 16:46 #3
Ja, jeg er sikker. Det kan man ikke nogle "rigtige" programmeringssprog - kun php, der er et stort, nasty hack.
Avatar billede barklund Nybegynder
31. marts 2005 - 16:46 #4
"Det kan man ikke i nogle..."
Avatar billede razmuz_dk Nybegynder
31. marts 2005 - 16:49 #5
Hehe okay okay så :) jamen så svar :)
Avatar billede barklund Nybegynder
31. marts 2005 - 16:50 #6
Finfin :)
Avatar billede plx Nybegynder
31. marts 2005 - 17:13 #7
barklund, du mener ikke C++ er et "rigtigt" programmeringssprog?
Avatar billede barklund Nybegynder
31. marts 2005 - 17:36 #8
plx, well - det må du slås med bjarne om :)
Avatar billede roenving Novice
02. april 2005 - 13:52 #9
-- den kan laves elegantere end barklunds eksempel:

function openURL(page,width,height) {
  height = height?height:300;
  width = width?width:300;
  window.open(page,'pop','height='+height+',width='+width);
}
Avatar billede barklund Nybegynder
02. april 2005 - 13:54 #10
Hvilket godt nok virker i dette tilfælde, men ikke med variabler der kan sættes menignsfyldt til 0, false eller "" - og ikke skal gives default værdier af den grund.

Det ville nok være:

height = height===undefined?height:300;
width = width===undefined?width:300;

Men jeg kan ikke se, hvorfor det skulle være smartere, hurtigere eller mere intuitivt end en "rigtig" if-sætning :)
Avatar billede roenving Novice
02. april 2005 - 14:03 #11
Jeg synes overskueligheden er lysår bedre, men det kræver selvfølgelig en forståelse for den 'ternære' operator !-)
Avatar billede barklund Nybegynder
02. april 2005 - 14:29 #12
Det vil jeg ikke lige kunne give dig ret i. if-sætningen er for det første mindre kode at eksekvere og ikke mindst utvetydig på alle punkter for enhver programmør. Så det ville jeg nok rekommandere - og også selv skrive.
Avatar billede roenving Novice
02. april 2005 - 14:32 #13
Den ternære operator er da blot et alias for en if-sætning ...
Avatar billede barklund Nybegynder
02. april 2005 - 14:38 #14
Ikke rigtig. Det er en operator, if-sætningen er en sætning. De er ikke hinandens synonymer på nogen måde. De kan langt hen af vejen bruges til det samme, men det er jo ikke det samme :)

Og if-sætningen har ingen else - for ingen else er nødvendig, da vi jo ingenting skal gøre hvis betingelsen ikke er opfyldt. Men den terniære operator, "conditional" eller "komprimeret betingelse" eller hvad man vil kalde den på dansk, har altid en else - og vil derfor altid både teste betingelsen og tildele variablen en værdi - men nogen gange bare sig selv. Der er da det mere optimalt at teste betingelsen og kun hvis den er opfyldt rent faktisk tildele variablen.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester