[Glazbom] Doug LLOYD: Pa do sada smo stari pro na web programiranje, zar ne? A mi smo pokriveni nekoliko jezici u pojedinim videa. A sada ćemo napraviti još jedan, JavaScript. Prvo dobra vijest, JavaScript je moderna programiranje Jezik slično PHP čije sintaksa je izveden iz C, pa to je dobro mjesto za početak. Radi se o stara kao PHP, kao i, što je oko 20 godina. To je izumio oko u isto vrijeme kao PHP. A JavaScript je zapravo prilično Temeljni na korisničkom iskustvu na webu. U stvari, postoje tri jezika koje sam bih nekako bi gore Korisnik iskustvo u interakciji s web stranice, HTML, CSS i JavaScript. I tako sad ćemo pričati malo o JavaScriptu. Loša vijest je, međutim, s JavaScript da postavlja puno pravila za sebe, a onda ih razbija. A JavaScript zapravo može biti vrsta izazovan učiti, jer je za razliku od C i PHP, koje su vrlo strukturirana i imaju vrlo stroga pravila koliko stvari mogu raditi. JavaScript je vrsta od dobivši tako fleksibilan da možda stvari ne idu raditi onako kako smo mi zamislili, a možda mi stvarno ne mogu naučiti naš prvi programski jezik kao JavaScript. Pa možda zato što ne Sama bilo pravila postavljena, i to ne stvarno provoditi dobre kodiranje navike. No, sada smo, nadamo se razvili neke dobre kodiranje navike, pa možemo početi prepad u JavaScriptu malo. Za pisanje JavaScript, slično otvaranju up C datoteku s ekstenzijom dot C ili PHP datoteka s dot PHP ekstenzija, sve što trebate učiniti je otvoriti datoteku Uz Dot JS ekstenzija datoteke. Ne trebamo imati bilo kakvu posebnu razdvojnike kao što smo učinili u PHP. Ta vrsta kuta Nosač upitnik PHP da smo nekad toga, način možemo reći da je ono što naš preglednik imamo je JavaScript je uključivanjem je u HTML tag, i vidjet ćemo malo o kako to učiniti u samo trenutak. Druga stvar koja čini JavaScript drugačije, ipak, da to traje strani klijenta. Pa sjećam s PHP koji mi nikada ne bi mogao stvarno vidi PHP koji je naglasio web stranicu. Ako smo ikada pogledali Izvor stranica, samo mi bi vidjeti html koji je generira taj PHP. Ali JavaScript pokreće klijent strani. Vaš JavaScript radi na vašem računalu. I to je razlog zašto možete učiniti Stvari kao što su dodali prozorčića. Pravo? Blokiranje oglasa obično radi ubijajući sve JavaScript koji se izvodi na određenoj web stranici. I zato što će morati izvoditi na vašem računalu klijenta strani, možete samo zaustaviti JavaScript za trčanje u cijelosti. To također znači da kada koristite web stranica koja uključuje JavaScript, morate poslati izvor JavaScript broj kao dio svoje http odgovor klijentu, kada to zatraže. I tako možda ne želite koristiti JavaScript učiniti uistinu osjetljive stvari kao što prolazi podataka O lozinke korisničkih natrag i naprijed, jer oni zapravo će primiti sve izvornog koda, Ne samo da se generira HTML, kao što bi bio slučaj s recimo PHP. Pa kako ćemo uključiti JavaScript u našem html za početak? Pa, slično CSS, zapravo, je vrsta kako ćemo to učiniti ovdje. S CSS smo stil oznake. A unutar tih stilskih oznaka, možemo definirati CSS style sheet. Slično s JavaScriptom možemo otvoriti skripte oznake, drugi html tag nismo govoriti o u našem HTML video, i pisati JavaScript u između tih skripte tagova. Također, iako, kao što su CSS, mi mogla povezati u vanjski CSS datoteke i povucite ih u naš program koji način. S CSS možemo također, oprostite, s JavaScriptom možemo navesti izvor atribut oznake skripte povezati u JavaScript zasebno, tako da ne morate ga pisati u između skripte oznaka, mi mogu povezati u korištenju da skripta tag, kao dobro. I baš kao i kod slučaja s CSS gdje Preporučuje se da je to vjerojatno u svom najboljem interesu za pisanje Vaš CSS u zasebnu datoteku u slučaju morate ga mijenjati, slično ne preporučujemo da pišete svoje JavaScript u zasebnim datotekama i koristiti izvor skripta oznake pripisuju vezati JavaScript u svoj HTML, web stranici. Dakle JavaScript varijable, mi ćemo početi govoriti o sintaksi ovdje. A mi ćemo proći kroz ova vrsta vrlo brzo, zato što smo to učinili u PHP, tako sve ovo bi trebalo biti prilično upoznati. Dakle, varijable u JavaScriptu su vrlo sličan PHP varijable. Nema specifikator vrste i kada uvesti varijablu, možete ga prefiks s var ključnu riječ. U PHP bismo učiniti nešto ovako, dolar znak x. Tako smo naznačeno varijabla, ali ne, mi ne spominje tip varijable na sve. Želimo reći nešto poput Dolar znak x jednak 44 u PHP. Ako su činili Ista stvar je u JavaScript, rekli bismo var x jednako 44. Dakle var je vrsta putu uvođenja varijablu. To je možda i malo više intuitivno nego samo znak za dolar varijable. Opet, jer nema vrste podataka, možemo to učiniti s bilo koje vrste podataka, žice, sve ostalo će sve biti var. Kondicional, svi naši stari prijatelji iz C i PHP su još uvijek dostupni, tako da imamo ako, drugo, ako, inače, prekidač i pitanje Mark debelo. Prekidač preostala kao fleksibilna kao njega bio u PHP-u, ali sve to ste upoznati s do sada. A isto tako s petlje su stari favoriti vrijeme, to vrijeme, a za još uvijek dostupna za nas. Dakle, već znamo mnogo od Osnovna JavaScript vrsta fundamentima Samo na temelju ima vrlo malo znanja sada o C i PHP. Što je funkcija u JavaScriptu? Pa, sličan PHP svaka funkcija uveden s funkcijom ključnu riječ. Kažeš funkciju, a onda vas početi definirati svoje funkcije. Što je malo drugačiji O JavaScript, iako je sposobnost da se ono što se naziva anonimni funkcija. Tako možete definirati funkcije da nemaju ime. To je nešto što stvarno nisam vidio prije. Mi stvarno ćemo koristiti pojam od anonimnog funkcije malo kasnije u ovom Video, jer ću napraviti malo više smisla u kontekstu kad smo ga vidjeli u određenoj situaciji da sam izrađenih ovdje. Ali neka je samo pogledati na ono jednostavnog JavaScript Funkcija moglo izgledati. Tako sam otišao naprijed i otvorio moj CS50 IDE i već sam pokrenuti Apache za početak moj poslužitelj trčanje. I ja imam ovu sliku otvorite zove home.html. A ja ću povećavanje malo ovdje. A u osnovi, možete vidjeti Home.html je samo hrpa tipki. A ja sam tvrdio na vrhu ovdje da je ovo poglavlje JavaScript materijali. Dakle, postoji hrpa gumbe ovdje, ali što ti gumbi zapravo učiniti? Pa, mi ćemo nad glavom na moje IED, i ja home.html su ovdje otvoriti. Na samom početku, ovdje gdje sam povezivanja u svim mojim JavaScript izvorne datoteke. Pravo? Dakle, imam anonymous.js, clock.js, Ja sam koristeći izvorni atribut od oznake skripte za povezivanje u datoteku. Pa nisam napisao bilo JavaScript izravno u ovu sliku, ali sam izvukao u svim JavaScript sam napisao zasebno. A ako ćemo pronaći ovdje, ovo dolje trebali svi izgledaju pomalo poznato s malo novih sintakse. Imamo ovdje header oznaka za funkcije i zatim gumb. Imam ulaz koji je gumb tipa, i očito kad sam ga klik, Idem nazvati neke funkcionirati datum upozorenja. A to je kako možemo vrsta pomiješati malo JavaScript i HTML. Oni su zapravo igraju prilično lijepo zajedno, pa kada je očito Ja kliknite na ovaj gumb, idem nazvati neki datum funkciju upozorenja. A isto tako se definira sam ponašanja za sve ostale tipke koje su na toj stranici home.html, koje ćemo vraćaju se tijekom ovog videa. No, vratimo se ovdje i pogledati pri clock.js, koji je JavaScript datoteke koje sam napisao da je ovo prvi funkciju ćemo pogledati. Kao što možete vidjeti, ja sam počeo moju JavaScript raditi s funkcijom ključne riječi, a ja sam dao taj jedan A ime, to se zove datum upozorenja. Unutar tamo, ja očito stvoriti Novi lokalni varijabla zove trenutni datum. I ja ću dodijeliti ravnopravni u novi dan. A mogli bismo dobiti u puno detalj kao što je datum, i stvarno JavaScript je tako velik da ne možemo pokriti sve na jednom videu. No, dovoljno je reći, to se događa da se vrate k meni stavke podataka koji sažima trenutni datum i vrijeme. Ja spremanje koja u varijablu da sam očito će upozoriti trenutni datum. Pa, što se upozorenje trenutni datum izgledati? Uzmimo pogled na samu datoteku natrag preko u prozoru preglednika. Pa opet, ovo je gumb koji sam su vezani za, ovaj nazivom funkciju. I ja sam ga tamo i kliknite tražiti ono što je učinio, to upozoreni. To popped ovu vrstu okvira reći mi da je trenutna vrijeme, očito to je 4. studenog u 10:43:43 ujutro. I ako sam ga ponovno kliknite sada to je nekoliko sekundi kasnije, zar ne? Tako da je sve to funkcija radi. Kad sam kliknite na ovaj gumb, to pojavi se poruka upozorenja za mene. Tako da stvarno ne previše funkcija To je različito od PHP, samo malo novih sintakse koji dolazi s radom s JavaScriptom. Nizovi u JavaScriptu su prilično jednostavan. Izjaviti niz, koristite uglatim zagradama sintaksa da smo upoznati s iz PHP. A sličan PHP, mi Također možete miješati vrste podataka. Dakle, ovo polje, i tih polja bih biti potpuno legitimni JavaScript. Jedan je to sve prirodni brojevi, a onaj koji se miješaju različite vrste podataka. Što je nešto vrlo različite u JavaScriptu, iako? To je pojam objekta. Pa možda ste čuli za Objektno orijentirano programiranje. Mi ne radimo puno toga u CS50, ali mi ćemo učiniti malo toga Ovdje u kontekstu JavaScript. Sada JavaScript ima mogućnost ponašaju kao objektno orijentirano programiranje jezika, ali nije sama isključivo objektno orijentirani programski jezik. A to opet dolazi natrag zašto sam rekao, to može biti vrlo izazovna za naučiti JavaScript kao svoj prvi programiranje jezik, jer se ne stvarno stane određenu paradigmu. C, s druge strane je funkcionalni programski jezik. Ako želimo, funkcije su vrsta velikog gazda čovjeku, zar ne? Oni diktiraju što događa sve ostalo. Želimo promijeniti varijable, zovemo funkcija. Mi radimo stvari funkcijama. Objekti umjesto toga, u objektno orijentirani jezik, objekata vrsta postao zvijezda i funkcije postaju neka vrsta sekundarne. No, ono što je predmet, što je to pojam objekta? Pa, ako to pomaže, mislim o tome na prvoj vrsti od poput C strukture ili STRUCT koje smo naučili o prije. U C, struktura sadrži broj polja, a možda smo sada mogli početi zvati tim područjima svojstva. Ali svojstva nikada stvarno stati na svoje, zar ne? Ako sam definirati strukturu za auto kao što je ovaj sa slijedeće dvije polja ili svojstva, jedan an broj za godinu automobila i još 10 znakova niz za model automobila, Ja mogu reći nešto poput ovoga, Ja mogu proglasiti novu varijablu tipa struct automobila Herbie. I onda ja mogu reći nešto kao herbie.year jednaka 1.963, i herbie.model jednak bubu. To je u redu. Ja sam koristeći polja u kontekstu strukture, ali nisam mogao jednostavno reći nešto poput ovoga. Pravo? Ne mogu koristiti naziv polja neovisno strukture. To je vrsta temeljne stvari. Dakle polja se temeljna za C struktura su vrlo slične osobine kao od temeljne važnosti za JavaScript objektima. No, ono što ih čini posebno zanimljivo je da predmeti također može imati ono što se nazivaju metode, koje su stvarno samo fancy riječ za funkcije koje su svojstveni objekta, kao dobro. Tako da je funkciju koja može biti samo naziva u kontekstu objekta. Samo objekt koji je definirao ova funkcija unutar njegove, ako mislite o struct, funkcija definiran u one definiranju vitičastih zagrada strukture. Dakle, to samo znači nešto strukturi. I to je vrsta ono što radimo ovdje s objektima i metodama. To je u osnovi kao što smo definiranje funkcije koje ima smisla samo na Konkretno objekt, pa smo nazvati metodu objekta. I nikada ne možemo nazvati Funkcija neovisan od objekta, baš kao što ne možemo reći godine ili model neovisno od STRUCT u C. Dakle funkcionalni programiranje paradigme izgledati nešto poput ovoga. Funkcija a onda kad prođe u objekt kao parametar. U objektno orijentiranog programskog jezika, ova vrsta dobiva zrcaljeno, a mi bi razmišljati o to ovako, object.function. Tako je vrsta te točke Operator opet implicira da je neka vrsta imovine ili atribut samog objekta. No, to je ono što je predmet orijentirani programski jezik možda učiniti da bi funkciju Pozivamo metodi, opet, što je samo posebna riječ za funkciju koja je svojstvena objekt. To je ono koje sintaksa moglo izgledati. I tako ćemo početi vidjeti neke od to u kontekstu JavaScript. Također možete razmišljati o nekom objektu vrsta kao asocijativni niz, što smo upoznati s iz PHP. Sjetiti asocijativni niz omogućuje da imamo ključnih parova vrijednosti, umjesto vlasništvo indeksa 0, jedan, dva, tri, i tako dalje kao da smo se iz C polja. Asocijativnih polja može karti Riječi, kao što je u PHP video, smo razgovarali o preljeva pizza. I tako smo imali niz nazivaju pizze, a mi imala sir je bio ključ i 8,99 $ je vrijednost, a zatim feferoni bio ključni, 9,99 $ je vrijednost, i tako dalje. I tako možemo razmišljati o objekt vrsta sličan asocijativno niz. I tako to sintaksa ovdje će stvoriti novi objekt zove Herbie s dva svojstva unutar nje. Godina koja je dodijeljena vrijednost 1963., i model, koja se dodjeljuje string Buba. I primijetiti ovdje da ja koristim jednostruke navodnike u JavaScriptu. Možete koristiti jednostruke ili dvostruke navodnike kada govorimo o žice. To je samo uobičajeno slučaj da većinu puta kada pišete JavaScript, vi samo koristite jednostruke navodnike. Ali ja mogao koristiti dvostruke navodnike ovdje, a da će biti savršeno u redu, kao dobro. Pa sjetite se kako je u PHP smo imali ovaj pojam od a za svaku petlju koja će nam omogućiti da ponoviti nad svim ključnim vrijednosti pari asocijativne niz, jer mi nisu imali tu mogućnost ponoviti kroz 0, jedan, dva, tri, četiri, i tako dalje? JavaScript je nešto vrlo slično, ali to ne zove za svaku petlju, to se zove iz petlje. Dakle, ako sam rekao da mi kao ovaj, za var ključ u objekt, to je vrsta slična govoreći za svakog nešto kao nešto. Ali sve radim ovdje iterating kroz sve tipke mog objekta. A unutar kovrčava aparatić tamo, ja bih koristiti objekt uglatim zagradama tipku za odnose vrijednosti na tom ključnom mjestu. Alternativno, postoji čak i drugi pristup. Ako sam samo samo briga o vrijednosti, što mogu reći za ključ od objekta, i samo koristiti tipke iznutra. Tako je za var ključ u objektu, imam koristiti objekt uglate zagrade Ključ unutar petlje. Za var ključ objekta, mogu samo koristiti tipke unutar petlje, jer ja sam samo konkretno govori o vrijednostima tamo. Tako ćemo možda trebati pogledajte razlike samo da se brzo pokazati razlika između četiri i za mjesta sa vrlo specifičan niz koji smo ovdje, tjedan polje. Pa moram pronaći novi niz da sam ispunjen sedam žice, Ponedjeljak, utorak, srijeda, Četvrtak, petak, subota, nedjelja. I želim sada ponoviti kroz ovaj niz, ispis određenih podataka. Ako sam koristiti za u petlji za ispis informacije, što misliš da ću dobiti? Pa, neka je pogledati. I prije nego što smo skočiti preko mom prozoru preglednika, samo znam da console.log je vrsta jednog način radi ispisa F u JavaScriptu. No, ono što je konzola? Pa, to je ono što ćemo ići pogledati upravo sada. U redu, tako da smo se ovdje u mom prozoru preglednika, i ja ću otvoriti moj razvojne alate. Opet, ja sam samo udaranje F12 otvoriti razvojne alate. I primijetiti da ovdje na top sam izabrao konzole. Dakle, to je pojam developer konzole, i to će nam omogućiti da ispisati informacije iz, vrsta kao terminal, ali kao što ćete vidjeti malo kasnije, možemo upisati podatke u interakciji s naše web stranice. Idem povećavanje malo ovdje, a ja ću sad kliknite na iz testa. I četiri u test-- Neću pokazati vam kod za njega upravo sada, ali ćete ga dobiti ako preuzeti izvorni kod koji je povezana s ovim video-- je upravo to iz petlje kako smo vidjeli samo Drugi je prije na slajdu. Tako ću klik koji gumb, i ovdje, evo što je tiskan u konzola, 0, jedan, dva, tri, četiri, pet, šest. Nisam ispisati podatke unutar tih array mjestima, jer sam koristio jer u petlji. A unutar tijela petlje, sam Samo ispisati ključ ključ se ne protivi. Ali ako ja sada jasno moje konzole, a ja prebaciti na za ispitivanja, a četiri od testa Kažem ja koristiti za petlje umjesto da i ispisati ključ, ako ja kliknite da, sad sam dobivanje stvarni elementi unutar mog objekta ili moja niz u ovom slučaju. Moja niz tjedan dana. Ja ispisati u ponedjeljak, Utorak, srijeda. Tako da je razlika između for u petlju, koja ispisuje samo tipke, ako samo koristiti tipke unutar tijela petlje, a za petlje, koji ispisuje iz vrijednosti ako koristite samo Ključ unutar tijela petlje. U redu, kako ćemo sada početi spojite žice i možda miješati se neke varijable s interpolacije kao što smo bili u mogućnosti to učiniti u PHP? Pa, mi smo prilično upoznati s tim od PHP. To je, kako bi to učiniti pomoću dot operateru da spojite žice. U JavaScript, ipak, mi zapravo koristiti nešto zove plus operater, koji možda čak i malo više intuitivno, zar ne? Mi dodajemo hrpa žice zajedno. Tako ćemo krenuti natrag i vidjeti što je to će ispisati ako nas pokušavate ispisati sve informacije u tjednu polje. U redu, pod ovdje pod string ulančavanje, Imam dvije opcije, niz zgrada V1, a zatim niz zgrada V2. I vidjet ćemo zašto smo potrebno V2 u sekundi. Ali ja ću kliknuti na Niz zgrada V1, koji je kod nas bilo Samo uzimanje pogled na, console.log sa svim plusevima. Idemo vidjeti ako Ispisuje što očekujemo. Ponedjeljak dan broj 01 u tjednu, Utorak je dan broj 11 u tjednu. Pa, što sam pokušavao učiniti bilo je dobiti to ispisati u ponedjeljak je dan broj jedan, utorak je dan broj dva. No, čini se kao da sam Uvijek ispis jedan. Pa, zašto je to tako? Pa, ispostavilo se, uzeti još jedan pogled u ovom malom isječku koda ovdje. Obavijest da smo pomoću plus Operater u dva različita konteksta. I tako evo gdje možda stvari da smo vrsta govorio, Oh, to je tako super. Mi ne bave vrste podataka više. Ali ovdje je gdje je činjenica da gubimo vrste podataka zapravo može biti malo problem za nas. Sada kada je plus operator koristi za spojite žice i dodavanje brojeva zajedno, JavaScript mora napraviti svoje najbolje pogoditi kao što želim to učiniti za mene. I u ovom slučaju, pogađate krivo. To samo spojene dan, što bi bilo 0, jedan, dva, tri, četiri, pet, šest ili, a zatim ga jednostavno spojeni da, a zatim spojeni jedan. To zapravo nije ih dodati zajedno. I tako su ti jezici, PHP i JavaScript, da oduzme daleko ovaj pojam vrste, ne morate se nositi s njom više. Oni još uvijek nemaju vrste ispod haube. I možemo, u situacijama ovako, iskoristiti tu činjenicu rekavši nešto kao što je možda ovo, što govori JavaScript, od strane način, tretirati kao cijeli broj, nemojte ga tretirati kao niz, čak iako smo miješanjem žice i integers ovdje. To je samo jedna od onih stvari da se čini tako velik u kontekstu da ne moraju baviti vrstama više, ali ponekad ćete izvoditi u situaciji baš kao što je ovaj, gdje činjenica da nemate kontrolu nad vrstama može obiti o vama ako niste oprezni. I tako ako mi pop natrag na IDE, ja sam će opet rasprodati svoje konzole, i ja ću kliknuti string Zgrada verzija dva, što gdje sam koristiti taj parsiranje int funkciju. Sada je ispis informacije koje sam očekivao. Ponedjeljak dan broj jedan, utorak Dan je broj dva, i tako dalje. Tako ćemo razgovarati o funkcijama opet. Obećao sam da ćemo razgovarati o anoniman funkcije, a sada kontekst za to napokon je stigao. Dakle, prije nego što smo to učinili, idemo opet razgovarati O polja za samo sekundu. Dakle polja su poseban Slučaj objekta. U stvari, sve što je u JavaScript je zapravo objekt. Dakle funkcije su Poseban slučaj objekta, cijeli brojevi su poseban Slučaj objekta, ali nizovi posebno imaju brojne metode. Zapamti jer su objekti, oni mogu imati svojstva i metode. Oni imaju niz metoda koje mogu se primijeniti na one objekte. Postoji metoda naziva Veličina, array.size, koji će se vratiti na vi kao što ste mogli očekivati broj elemenata u nizu. array.pop, nešto poput naš pojam iskakanje izvan od stog, ako se sjećate iz naše hrpe videa, uklanja posljednji element iz polja. array.push dodaje novi element na kraju niza. array.shift je vrsta kao DQ, to splices se Prvi element niza. No, tu je i još jedna posebna metoda niza naziva kartu. A to je vrsta zanimljiv koncept. Dakle, ono što je ideja o karti? Vi zapravo ćete vidjeti na nekoliko drugih jezika, i mi ne govorimo o vrsta kartografa kartu ovdje, govorimo o funkciji mapiranja. U kontekstu smo ovdje govorimo o, karta je posebna operacija smo mogu obavljati na niz primijeniti određenu funkciju za svaki element tog polja. pa bismo reći ovaj slučaj, možda array.map, i unutar nje, mi prolaze u karti je funkcija koja želimo koji se primjenjuje na svaki element. Dakle, to je vrsta analogna korištenja petlja se ponoviti više svaki element i primijeniti određeni funkcioniraju na svakom elementu, Samo JavaScript je to izgrađen u Pojam mapiranje koje se mogu primijeniti. A to je velika kontekst govorimo o anonimnoj funkciji. Tako recimo imamo ovaj niz brojeva. To se zove Nums, i to je dobio pet stvari u njemu, jedan, dva, tri, četiri, pet. Sada želim map neke funkcija na ovom nizu. Želim imati funkciju prijaviti na svaki element niza. Pa, recimo da je ono što želim učiniti je samo dvostruko svih elemenata. Što sam mogao učiniti je samo koristiti petlju za var sam jednak 0, sam je manji od ili jednak 4, ja plus, plus, i zatim dvaput svaki broj. Ali ja mogu učiniti nešto ovako. Ja mogu reći Nums je nekada jedan dva tri četiri pet, Sada, međutim, ja bih vas rado primijeniti mapiranje na ovom nizu gdje želite udvostručiti svaki broj. I to je točno što se ovdje događa. Ali primijetiti ono što sam prolazu u što je argument za mapiranje. Ovo je anonimni funkcija. I primijetiti nisam dao ova funkcija ime, Samo sam ga dao popis parametara. I tako to je primjer od anonimnog funkcije. Mi obično nikada ne bih nazvao ovo Funkcija izvan konteksta karte. Mi smo ga definira kao parametar na karti, pa mi stvarno ne moraju imati naziv za to, ako je Jedina stvar koja brine o je karta i to je definirano u pravu postoji unutar karte. I tako je to anonimni funkcija. Nismo bili u mogućnosti to učiniti ranije. Karta neke funkcije koje prihvaća jedan parametar, num, i što da radi funkcija se vraća NUM puta 2. I tako, nakon toga Mapiranje je primijenjen, ovo je sada ono što Nums izgleda kao, dva, četiri, šest, osam, 10. A mi ćemo se pojaviti na to moj prozor preglednika i samo pogledajte ovo jako brzo, kao dobro. Dakle, imam još jedan gumb ovdje u mojoj početnoj stranici zove dvostruko. A kad sam kliknite dvaput, a to govori mi prije nego što je jedan, dva, tri, četiri, Pet nakon dvije, četiri, šest, osam, 10. I ako sam se vratiti i kliknite dvaput opet, dvije, četiri, šest, osam, 10. A onda, nakon, četiri, osam, 12, 16, a zatim 20. A što ja radim u ovoj funkciji? Pa, ako smo samo pop preko IDE, i Ja povući moj anonimni funkciju, ovdje na liniji sedam do 13 godina, ja sam radi malo otmjenu posao ovdje, ali ja sam samo ispis ono što je trenutno u nizu. Zatim na liniji 16, 17, i 18, tu je moja karta. Ovo je mjesto gdje sam primjene ove udvostručenje Funkcija za svakog pojedinog elementa. A onda malo dalje, Ja samo radim istu stvar Radio sam i prije, osim što je sada sam ispis sadržaja polja nakon toga. Ali sve što sam učinio ovdje samo koristiti anonimni funkciju mapirati preko cijelog niza. Dakle, još jedna velika tema za razgovor o na JavaScript je pojam događaja. Događaj je nešto što se događa samo kada korisnik komunicira s web stranica, pa možda oni kliknite nešto, ili možda stranica učitaju, ili možda ste se preselili miš preko nečega, ili oni 'upisali nešto u polje za unos. Sve ove stvari su događaji koji se događaju na našoj web-stranici. A JavaScript ima sposobnost za podršku nešto naziva rukovatelj događaj, koji se je funkcija povratni poziv da odgovara na HTML događaja. A što je funkcija povratni poziv? Pa, to je obično samo još jedan naziv za anonimnog funkciju. To je funkcija koja reagira na događaj. I ovo je mjesto gdje smo došli do Ideja vezanja određene funkcije određenom html atributa. Većina HTML elementi imaju podrška za atribut da nismo razgovarali o tome u HTML Video za nešto poput na klik ili na lebdjeti ili na teret, sve te događaje koje onda možete pisati funkcije koje se bave tim događajima kada one događaje pojavljuju na web stranici. I tako možda vaš HTML izgleda otprilike ovako. I ja imam dva gumba ovdje Gumb jedan i dva gumba, a ovdje sam trenutno definirano ništa, ali to je gdje je atribut na klik je očito dio moje html tag. Dakle, očito kad sam definirati što je to događa unutar tog atributa, to će biti neka JavaScript funkcija koja reagira na događaj vjerojatno klika na Gumb jedan ili dva gumba. Što je vrsta cool o tome je što može napisati generički događaj rukovatelj. I ovaj događaj će Handler stvoriti događaj objekt. A objekt događaj će nam reći koji od dva gumba su kliknuli. Sada kako se to radi? Pa, to bi moglo izgledati nešto poput ovoga. Dakle, prvo ćemo definirati naše gumbiće da imaju odgovor na povratni poziv funkciju koja će se zvati kad se klikne gumb, ćemo nazvati događaj upozorenja ime. I primjetiti u oba slučaja smo si prolaze u ovom parametru događaja. Tako zovemo ovu funkciju ili kad je ova funkcija pokreće slučaju događa, to će stvoriti ovaj događaj objekt i to prođe kao parametar upozoriti ime. I taj događaj objekt će sadržavati podatke o kojima je gumb kliknuo. I kako to učiniti? Pa, to bi moglo izgledati nešto poput ovoga. Tako sada u moj odvojeno JavaScript datoteke, mogao bih morati pronaći ovo Funkcija naziv upozorenja, koji opet prihvati taj parametar događaja. A onda je ovdje gdje sam otkrivanja koji gumb je pokrenuo, var okidač jednak događaj točka izvor elementa. Koji je izvor koji je stvorio ovaj događaj objekt koji je donesen u? Je li to jedan gumb ili je to tipku dva? I onda ovdje sve radim je ispis trigger.innerhtml. Dakle, u ovom slučaju, u ovom kontekst, trigger.innerhtml je upravo ono što je napisano na gumb. To samo tako se događa ako smo skočiti natrag na sekundu, da bi biti ono što je između tih tipki tagova. To će biti jedan gumb ili gumb dva. I neka je pogledati kako je ovaj događaj rukovatelj bi izgleda da smo imali to radi u praksi. Dakle, prije svega, vi ste otvorile events.js, koja je JavaScript datoteka u kojoj Imam definirana ovu funkciju. I kao što možete vidjeti, to je prilično mnogo upravo ono smo upravo vidjeli na slajdu drugi prije. I ja ću ići na to početna stranica koje smo koristili. I ja imam tu tipku jedan i dva gumba. A ja ću kliknuti na gumb jednom. Ste kliknuli na gumb jednom, ako vas možete vidjeti ovdje u pripravnosti. U REDU. Kliknite na gumb dva, te klikne na gumb dva. Dakle, obje tipke imaju Isto Funkcija poziva, zar ne? Obojica su ime oprezu događaj, ali ovaj događaj objekt koji se stvara kada smo kliknite na to nam govori koji je gumb kliknuo. Nismo imali napisati dvije zasebne funkcije ili se bave s proći bilo kakve dodatne informacije. Mi samo oslanjajući se na ono JavaScript hoće učiniti za nas, a to je stvaranje koje vrsta događaja objekta na naše ime. Postoji puno više nego JavaScript ono što smo pokriveni u ovom videu, ali ima njih Temeljni trebali dobiti dosta dugo načina da sve učenju ćete trebate znati o ovom Zanimljivo jezik. Ja sam Doug Lloyd. Ovo je CS50.