siDDis Skrevet 26. januar 2015 Del Skrevet 26. januar 2015 Skulen burde heller fokusere på Python. Som verkeleg skinner når det kjem til matteoppgåver og som er veldig relevant, framfor websider som roboter vil automatisk generere for oss i framtida. Jeg tror neppe man noen gang finner en robot som skriver som William Shakespeare. Begynner å nærme seg Mozart eller Beethoven iallefall http://artsites.ucsc.edu/faculty/cope/Emily-howell.htm Lenke til kommentar
Gjest Slettet-YQ8U8xbZ Skrevet 27. januar 2015 Del Skrevet 27. januar 2015 Kjapt spørsmål! Er android applikasjoner som Facebook, Spotify, Twitter osv. skrevet i java? Hva med det litt større spillene som Clash of clans? Lenke til kommentar
Brattus Skrevet 27. januar 2015 Del Skrevet 27. januar 2015 All client code is written in Objective-C and C++, and server code in Java. Clash of clans http://www.quora.com/What-3D-Engine-does-the-Clash-of-Clans-mobile-game-use Finner mye om du bare søker på "<Appnavn> + programming language" https://developer.spotify.com/web-api/code-examples/ Lenke til kommentar
Emancipate Skrevet 12. februar 2015 Del Skrevet 12. februar 2015 (endret) Med tanke på den evige kampen blant nettlesere om å ha den raskeste javascript-motoren, så begynte jeg å lure på en ting: Om man skal lage en js-motor, er det tilstrekkelig å kunne parse et helt program om gangen, eller er js lagd sånn at det kan finne på å skrive seg selv underveis? Edit: Og er det en fornuftig grunn til at å aksessere en udefinert variable er en feil, mens å aksessere en udefinert property ikke er det? Endret 12. februar 2015 av Emancipate Lenke til kommentar
Matsemann Skrevet 12. februar 2015 Del Skrevet 12. februar 2015 Du har "closures" i JS (og mange andre språk), så hvilke verdier (eller til og med hvilke funksjoner) som blir kalt inni en funksjon kan være vanskelig å si før den faktisk brukes. Mange biblioteker utnytter også "eval" i bakgrunnen for å få til en del funksjonalitet. Lenke til kommentar
Lycantrophe Skrevet 12. februar 2015 Del Skrevet 12. februar 2015 Det er tilstrekkelig å parse en gang uansett. 1 Lenke til kommentar
Emancipate Skrevet 12. februar 2015 Del Skrevet 12. februar 2015 Det var mer noe sånt jeg tenkte på: <!DOCTYPE html> <html> <head> <title></title> <script type="text/javascript"> document.writeln('alert("text");</scr'+'ipt>'); Jeg får ikke feilmelding, ikke riktig melding, og ikke noen annen melding heller. Lenke til kommentar
Enthroner Skrevet 12. februar 2015 Del Skrevet 12. februar 2015 (endret) Det var mer noe sånt jeg tenkte på: <!DOCTYPE html> <html> <head> <title></title> <script type="text/javascript"> document.writeln('alert("text");</scr'+'ipt>'); Jeg får ikke feilmelding, ikke riktig melding, og ikke noen annen melding heller. Dette skal gi deg SyntaxError: Unexpected token < fordi resten av dokumentet vil bli parset som JavaScript Redigert 1: gitt at du closer head og html taggene. Redigert 2: det kan vel også komme litt an på htmlmotoren til browser. Chrome sin har jeg erfart at emitter closing tags der den mener det skal være. Endret 12. februar 2015 av Enthroner Lenke til kommentar
Emancipate Skrevet 12. februar 2015 Del Skrevet 12. februar 2015 (endret) Det er ikke noe "resten av dokumentet", det der er hele. Her lurer jeg også på hva som egentlig skjer: <!DOCTYPE html> <html> <head> <title></title> <script type="text/javascript"> document.writeln('<scr'+'ipt type="text/javascript">alert("text");</scr'+'ipt>'); </script> </head> <body> </body> </html> Så langt, så ugreit, men vent på denne:document.writeln() burde skrive på slutten av dokumentet, deretter kjøres de neste to linjene, og så til slutt alert(). Dermed burde det stå "textalphabeta". Isteden avbrytes scriptet med feilmelding "undefined variable b" i console. Men sett var foran b, og vips kjører scriptet. Og gir meldingen "textundefinedundefined". Hvorfor får jeg ikke enten feilmelding eller "textalphabeta"? <!DOCTYPE html> <html> <head> <title></title> <script type="text/javascript"> document.writeln('<scr'+'ipt type="text/javascript">alert("text"+a+b);</scr'+'ipt>'); var a = "alpha"; b = "beta"; // var b = "beta" </script> </head> <body> </body> </html> Endret 12. februar 2015 av Emancipate Lenke til kommentar
Enthroner Skrevet 12. februar 2015 Del Skrevet 12. februar 2015 (endret) Det er ikke noe "resten av dokumentet", det der er hele. Her lurer jeg også på hva som egentlig skjer: <!DOCTYPE html> <html> <head> <title></title> <script type="text/javascript"> document.writeln('<scr'+'ipt type="text/javascript">alert("text");</scr'+'ipt>'); </script> </head> <body> </body> </html> *Resulterer i en alert og et resultat som ser slik ut (med chrome): <!DOCTYPE html> <html><head> <title></title> <script type="text/javascript"> document.writeln('<scr'+'ipt type="text/javascript">alert("text");</scr'+'ipt>'); </script><script type="text/javascript">alert("text");</script> </head> <body> </body></html> REDIGERT: jeg har ikke sett noen spesifikasjon noe sted på at document.writeln skal skrive til slutt i DOM, jeg tror den skriver der den blir parset. REDIGERT 2: i ditt siste eksempel så blir script tags seende slik ut: <script type="text/javascript"> document.writeln('<scr'+'ipt type="text/javascript">alert("text"+a+b);</scr'+'ipt>'); var a = "alpha"; b = "beta"; // var b = "beta" </script> <script type="text/javascript">alert("text"+a+b);</script> Hvorfor dette skjer er litt interessant, og jeg har ikke svaret. Når du skriver b = "beta"; så er den implisitt global, og vil legges til som en property på det globale objektet (window). Meerkelig... Endret 12. februar 2015 av Enthroner Lenke til kommentar
Matsemann Skrevet 12. februar 2015 Del Skrevet 12. februar 2015 Det er tilstrekkelig å parse en gang uansett. Ja, kommer litt an på hva man snakker om, men. Jeg tenkte, typ a = "alert(b)"; // masse js b = "haha"; eval(a); // masse js Da holder det å parse én gang og se at det er korrekt js. Men i det eval skal kjøres, må strengen parses før den kan evalueres. Lenke til kommentar
Emancipate Skrevet 12. februar 2015 Del Skrevet 12. februar 2015 (endret) REDIGERT: jeg har ikke sett noen spesifikasjon noe sted på at document.writeln skal skrive til slutt i DOM, jeg tror den skriver der den blir parset.Det har du visst rett i. Bortsett fra at den skriver etter script-taggen. Scriptet kan altså ikke skrive inni seg selv. Noe som angir at svaret på det originale spørsmålet mitt blir som L. sa, at det holder å parse én gang. Men jeg klarer fortsatt ikke helt å få inn i skolten at dette viser det som det viser: <!DOCTYPE html> <html> <head> <title></title> <script type="text/javascript"> /* alert: text undefinedundefined alert: sist alphabeta */ document.writeln('<scr'+'ipt type="text/javascript">alert("text "+a+b);</scr'+'ipt>'); var a = "alpha"; var b = "beta"; // var b = "beta" </script> <script type="text/javascript"> alert("sist " + a + b); </script> </head> <body> </body> </html> Det ekspanderes jo tross alt til: <html><head> <title></title> <script type="text/javascript"> /* alert: text undefinedundefined alert: sist alphabeta */ document.writeln('<scr'+'ipt type="text/javascript">alert("text "+a+b);</scr'+'ipt>'); var a = "alpha"; var b = "beta"; // var b = "beta" </script> <script type="text/javascript">alert("text "+a+b);</script> <script type="text/javascript"> alert("sist " + a + b); </script> </head> <body> </body></html> Endret 12. februar 2015 av Emancipate Lenke til kommentar
Lycantrophe Skrevet 12. februar 2015 Del Skrevet 12. februar 2015 Da holder det å parse én gang og se at det er korrekt js. Men i det eval skal kjøres, må strengen parses før den kan evalueres.Men det er jo å kalle enginen på nytt. Ingenting utenfor eval vil da parses. Lenke til kommentar
Emancipate Skrevet 12. februar 2015 Del Skrevet 12. februar 2015 Men jeg klarer fortsatt ikke helt å få inn i skolten at dette viser det som det viser:Jeg fant et svar. Inne i kallet til document.write kalles HTML-parseren opp for å ta seg av parameteret, den parser script-taggen, og dette kaller igjen opp js-motoren, som kjører scriptet (alert(...)), og på det tidspunktet er jo ikke a og b satt ennå. Jeg er litt usikker på om dette egentlig er i henhold til spec eller en bug, men man kan se det ved å sette en alert() etter var b="beta"; Denne kjøres da etter (!) alerten i document.write(). I hvert fall får man i praksis atferd analogt til denne koden: <!DOCTYPE html> <html> <head> <title></title> <script type="text/javascript"> alert("ok" + a); // fra document.write("<scr... alert("ikke ok" + b); // fra document.write("<scr... var a = "alpha"; b = "beta"; alert("kommer aldri hit"); </script> </head> <body> </body> </html> Variabler deklarert med var kan "brukes" før de er definert fordi de er oppdaget i en gjennomlesing før koden kjøres. Det som er litt (veldig) snodig er at b="beta" (uten var) faktisk er implisitt window.b = "beta", men likevel er det ikke likt å lese fra udefinert b som å lese fra udefinert window.b! <!DOCTYPE html> <html> <head> <title></title> <script type="text/javascript"> uten_var = "uten_var"; alert("window." + window.uten_var); // viser "uten_var" alert(window.blabla); // viser undefined alert(blabla); // error - viser ingenting </script> </head> <body> </body> </html> Lenke til kommentar
Matsemann Skrevet 12. februar 2015 Del Skrevet 12. februar 2015 (endret) Da holder det å parse én gang og se at det er korrekt js. Men i det eval skal kjøres, må strengen parses før den kan evalueres.Men det er jo å kalle enginen på nytt. Ingenting utenfor eval vil da parses. Jepp, var bare for å påpeke min tolkning av spørsmålet. Variabler deklarert med var kan "brukes" før de er definert fordi de er oppdaget i en gjennomlesing før koden kjøres. Det kalles "hoisting", og kan være litt forvirrende i starten med javascript. Alle deklarasjoner av variabler skjer i praksis "i starten" av funksjonen, uansett når de faktisk er definert lenger nede i koden. For å sitere MDN: Because variable declarations (and declarations in general) are processed before any code is executed, declaring a variable anywhere in the code is equivalent to declaring it at the top. This also means that a variable can appear to be used before it's declared. This behavior is called "hoisting", as it appears that the variable declaration is moved to the top of the function or global code. Det som er litt (veldig) snodig er at b="beta" (uten var) faktisk er implisitt window.b = "beta", men likevel er det ikke likt å lese fra udefinert b som å lese fra udefinert window.b! Jepp, udaklerte variabler er globale, og kan derfor leses igjennom window objektet. Merk at dette aldri bør brukes i praksis, da det knekker alt om to kodesnutter tilfeldigvis bruker samme navn på to variable. Fra samme side på MDN Assigning a value to an undeclared variable implicitly creates it as a global variable (it becomes a property of the global object) when the assignment is executed. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/var Du har klart å oppdage mange av de spesielle tingene med javascript. Skal du programmere mye i JS anbefaler jeg å lese deg opp på en del slike ting, da det er *mange* slike overraskelser. Endret 12. februar 2015 av Matsemann Lenke til kommentar
Gjest Slettet+9871234 Skrevet 12. februar 2015 Del Skrevet 12. februar 2015 Matsemann <off topic> Artig signatur. Min teori er at du aldri vil høre en NP komplett vits. Stack exchange profil. Glimrende. </off topic> Lenke til kommentar
Emancipate Skrevet 12. februar 2015 Del Skrevet 12. februar 2015 Du har klart å oppdage mange av de spesielle tingene med javascript.jeg klarer alltid å rote meg borti trøbbel. Lenke til kommentar
Lycantrophe Skrevet 12. februar 2015 Del Skrevet 12. februar 2015 Det beste er selvfølgelig å unngå javascript 100% fordi det er en svulst av en teknologi og burde strengt tatt dø i morgen. 1 Lenke til kommentar
Enthroner Skrevet 12. februar 2015 Del Skrevet 12. februar 2015 Det beste er selvfølgelig å unngå javascript 100% fordi det er en svulst av en teknologi og burde strengt tatt dø i morgen. Ahahaha. Hvordan våger du å snakke om et av yndlingsspråkene mine på denne måten? Skamme seg! (og når du skammer deg, les JavaScript: The Good Parts, kjøp deg et Espruino brett og start et Node.js prosjekt) 1 Lenke til kommentar
Lycantrophe Skrevet 12. februar 2015 Del Skrevet 12. februar 2015 Hadde alt det vært tilfellet for meg hadde jeg kastet meg foran et tog. 1 Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå