1 00:00:00,000 --> 00:00:05,470 [SKAN INSTRUMENTĀLĀ MŪZIKA] 2 00:00:05,470 --> 00:00:08,806 DUGS LOJDS: Līdz ar to CS50 beigās mēs jūs iepazīstināsim ar vairākām 3 00:00:08,806 --> 00:00:12,143 dažādām programmēšanas valodām, un mēs nevarēsim tās aptvert tik 4 00:00:12,143 --> 00:00:15,480 dziļi, kā mums izdevās aptvert C kursa laikā iepriekš. 5 00:00:15,480 --> 00:00:18,270 Mērķis nav sniegt jums pilnīgu informāciju par to, ko šīs valodas 6 00:00:18,270 --> 00:00:21,060 dara, bet gan sniegt jums pietiekami daudz pamatzināšanu un parādīt, 7 00:00:21,060 --> 00:00:23,850 ka ir pietiekami daudz paralēlu lietu, kuras jūs jau zināt, lai jūs 8 00:00:23,850 --> 00:00:26,640 varētu turpināt un patiešām pilnveidot savas zināšanas par šīm 9 00:00:26,640 --> 00:00:29,430 dažādajām valodām. 10 00:00:29,430 --> 00:00:33,030 Un viena no šīm valodām , ko mēs tūlīt apskatīsim, ir JavaScript. 11 00:00:33,030 --> 00:00:36,637 Tagad, līdzīgi citām valodām, par kurām mēs runājām, ir moderna 12 00:00:36,637 --> 00:00:40,245 programmēšanas valoda, kas ir atvasināta no C sintakses. 13 00:00:40,245 --> 00:00:42,267 Tātad, ja esat iepazinies ar C, jūs varēsit diezgan ātri apgūt 14 00:00:42,267 --> 00:00:44,290 JavaScript. 15 00:00:44,290 --> 00:00:46,630 Tā pastāv gandrīz tikpat ilgi kā Python. 16 00:00:46,630 --> 00:00:49,994 Tā tika izgudrota dažus gadus vēlāk, deviņdesmito gadu vidū. 17 00:00:49,994 --> 00:00:53,822 Tas, kas ir svarīgi par JavaScript, kā arī HTML un CSS, par ko mēs 18 00:00:53,822 --> 00:00:57,651 runājām citos videoklipos, ir ka šīs trīs valodas veido lietotāja 19 00:00:57,651 --> 00:01:01,480 pamatpieredzi, ko nozīmē būt tiešsaistē. 20 00:01:01,480 --> 00:01:04,897 Tāpēc izpratne par to, kā lietot JavaScript, HTML un CSS un strādāt 21 00:01:04,897 --> 00:01:08,315 ar tām , ļaus jums patiešām izveidot vietnes, kuras lietotājiem 22 00:01:08,315 --> 00:01:11,732 patiks apmeklēt, jo šajās trīs valodās varēsit viņiem radīt lielisku 23 00:01:11,732 --> 00:01:15,150 lietotāja pieredzi. 24 00:01:15,150 --> 00:01:17,250 Rakstīt JavaScript ir ļoti vienkārši. 25 00:01:17,250 --> 00:01:19,245 Atveriet failu ar dot js faila paplašinājumu un nekavējoties sāciet 26 00:01:19,245 --> 00:01:21,240 rakstīt JavaScript. 27 00:01:21,240 --> 00:01:23,760 Ja esat iepazinies ar tādu valodu kā PHP, jūs zināt, ka jums ir 28 00:01:23,760 --> 00:01:26,280 jāraksta savs kods šajos norobežojumos — iekava, jautājuma zīme, PHP, 29 00:01:26,280 --> 00:01:28,800 un tamlīdzīgi 30 00:01:28,800 --> 00:01:29,880 Mums tas nav jādara JavaScript. 31 00:01:29,880 --> 00:01:31,845 Mēs burtiski tikai sākam rakstīt savu kodu JavaScript failā, kas ir 32 00:01:31,845 --> 00:01:33,810 diezgan jauki. 33 00:01:33,810 --> 00:01:36,720 Mūsu vietne arī zinās, ka mūsu fails ir JavaScript, jo mēs to 34 00:01:36,720 --> 00:01:39,630 norādīsim HTML tagā. 35 00:01:39,630 --> 00:01:42,690 Mēs teiksim, ka man ir JavaScript tipa skripts, un tas ir fails ar 36 00:01:42,690 --> 00:01:45,750 dot js faila paplašinājumu. 37 00:01:45,750 --> 00:01:47,090 Diezgan vienkārši. 38 00:01:47,090 --> 00:01:51,003 Tagad atšķirībā no Python, kas darbojas servera pusē, tas ir, tajā 39 00:01:51,003 --> 00:01:54,916 pusē, kur atrodas vietne, JavaScript lietojumprogrammas darbojas 40 00:01:54,916 --> 00:01:58,830 klienta pusē jūsu datorā, kad apmeklējat vietni. 41 00:01:58,830 --> 00:02:02,640 JavaScript iekļaut savā HTML ir diezgan vienkārši. 42 00:02:02,640 --> 00:02:05,156 Tāpat kā tad, ja mēs iekļaujam CSS ar stila tagiem, mēs varam iekļaut 43 00:02:05,156 --> 00:02:07,672 JavaScript starp skripta tagiem. 44 00:02:07,672 --> 00:02:10,886 Tātad mēs varam atvērt skripta tagu un burtiski sākt rakstīt 45 00:02:10,886 --> 00:02:14,100 JavaScript tieši mūsu HTML, kas ir lieliski. 46 00:02:14,100 --> 00:02:17,040 Taču tāpat kā CSS, kur mums ir saites tagi, mēs varam ierakstīt savu 47 00:02:17,040 --> 00:02:19,980 JavaScript citā failā un savienot to, izmantojot skripta taga 48 00:02:19,980 --> 00:02:22,920 atribūta avotu. 49 00:02:22,920 --> 00:02:27,180 Operētājsistēmā CS50 tas noteikti ir vispiemērotākais veids, jo 50 00:02:27,180 --> 00:02:31,440 īpaši, ja jums ir JavaScript fails, kas var tikt izmantots dažādās 51 00:02:31,440 --> 00:02:35,700 jūsu vietnes lapās vai kura saturs var tikt izmantots. 52 00:02:35,700 --> 00:02:40,050 Jums nav jāraksta JavaScript starp skripta tagiem katrā lapā. 53 00:02:40,050 --> 00:02:43,715 Jums svarīgi, lai jūs varētu vienkārši atsaukties uz ārēju failu un 54 00:02:43,715 --> 00:02:47,380 katru reizi tikt saistīts ar to. 55 00:02:47,380 --> 00:02:50,270 Tāpēc ātri noskaidrosim dažas pamatlietas , ko varētu izmantot 56 00:02:50,270 --> 00:02:53,160 JavaScript. 57 00:02:53,160 --> 00:02:55,440 Tātad mainīgie — tie patiešām ir līdzīgi Python mainīgajiem un ļoti 58 00:02:55,440 --> 00:02:57,720 līdzīgi C mainīgajiem. 59 00:02:57,720 --> 00:02:59,190 Nav nepieciešams tipa norādītājs. 60 00:02:59,190 --> 00:03:03,210 Un, ja vēlaties lokālo mainīgo, ievadiet to ar atslēgvārdu var. 61 00:03:03,210 --> 00:03:05,752 Tātad Python mēs teiktu kaut ko līdzīgu šim — x ir vienāds ar 44. 62 00:03:05,752 --> 00:03:08,656 Mēs nevēlamies to darīt JavaScript, jo tas faktiski radītu globālu 63 00:03:08,656 --> 00:03:11,560 mainīgo, ja beigās liktu semikolu. 64 00:03:11,560 --> 00:03:13,980 Mēs vēlamies to — var x ir vienāds ar 44. 65 00:03:13,980 --> 00:03:16,980 Tas izveido lokālo mainīgo ar nosaukumu x JavaScript un saglabā tajā 66 00:03:16,980 --> 00:03:19,980 vērtību 44. 67 00:03:19,980 --> 00:03:23,310 Nosacījumi — visi agrāk plaši izmantotie no C ir pieejami lietošanai. 68 00:03:23,310 --> 00:03:25,588 If, else if, else, pārslēdzieties, jautājuma zīme kols — tas viss ir 69 00:03:25,588 --> 00:03:27,867 godīga spēle. 70 00:03:27,867 --> 00:03:29,773 Mēs par tiem nerunāsim sīkāk, jo esam tos aplūkojuši savos 71 00:03:29,773 --> 00:03:31,680 videoklipos par C. 72 00:03:31,680 --> 00:03:33,675 Bet tie visi ir paredzēti lietošanai JavaScript, un tie darbojas 73 00:03:33,675 --> 00:03:35,670 gandrīz vienādi. 74 00:03:35,670 --> 00:03:39,153 Tikmēr joprojām ir pieejamas visas cilpas, kuras mēs pazīstam no C, - 75 00:03:39,153 --> 00:03:42,636 while cilpas, do-while cilpas un for cilpas. Lai gan mums ir dažas 76 00:03:42,636 --> 00:03:46,120 citas variācijas, par kurām mēs runāsim tikai mazliet. 77 00:03:46,120 --> 00:03:47,925 Tagad visas JavaScript funkcijas tiek ieviestas ar funkciju 78 00:03:47,925 --> 00:03:49,730 atslēgvārdu. 79 00:03:49,730 --> 00:03:50,750 Tātad tā ir funkcija. 80 00:03:50,750 --> 00:03:53,233 Uzrakstiet funkcijas nosaukumu un parametrus, un pēc tam mēs 81 00:03:53,233 --> 00:03:55,716 definēsim savu funkciju starp figūriekavām tāpat kā C, izņemot to, ka 82 00:03:55,716 --> 00:03:58,200 C, protams, mēs neizmantojam funkcijas atslēgvārdu. 83 00:03:58,200 --> 00:04:03,540 Taču arī JavaScript ir trūkums, proti, funkcijas var būt anonīmas. 84 00:04:03,540 --> 00:04:06,180 Tas nozīmē, ka jums nav jādod viņām nosaukums . 85 00:04:06,180 --> 00:04:08,150 Tagad jūs varētu sev jautāt: pagaidiet, kā es varu izsaukt funkciju, 86 00:04:08,150 --> 00:04:10,120 ja tai nav nosaukuma? 87 00:04:10,120 --> 00:04:13,090 Nu, mēs par to runāsim tikai nedaudz, un mēs runāsim par to, ko es 88 00:04:13,090 --> 00:04:16,060 šeit domāju, aprakstot lietu sasaistīšanu ar HTML elementiem. 89 00:04:16,060 --> 00:04:19,009 Par to mēs runāsim video saistībā ar dokumenta objekta modeli, bet 90 00:04:19,009 --> 00:04:21,959 par anonīmajām funkcijām mēs runāsim pēc brīža. 91 00:04:21,959 --> 00:04:24,623 Es sniegšu jums piemēru, un jūs varēsiet redzēt, kā tās varētu būt 92 00:04:24,623 --> 00:04:27,287 noderīgas noteiktos kontekstos. 93 00:04:27,287 --> 00:04:29,483 Un šie konteksti faktiski daudz materializējas JavaScript 94 00:04:29,483 --> 00:04:31,680 programmēšanā. 95 00:04:31,680 --> 00:04:33,646 JavaScript, tāpat kā C un tāpat kā Python, ir analogi Python 96 00:04:33,646 --> 00:04:35,612 sarakstiem. 97 00:04:35,612 --> 00:04:37,320 Ir masīvi, un jūs varat deklarēt masīvu. 98 00:04:37,320 --> 00:04:38,530 Tas ir diezgan vienkārši. 99 00:04:38,530 --> 00:04:41,520 Piemēram, var nums izveido lokālu masīvu. 100 00:04:41,520 --> 00:04:44,490 Un tad man ir kvadrātiekavas, un man ir tikai ar komatu atdalīts 101 00:04:44,490 --> 00:04:47,460 saraksts ar visām vērtībām, kuras vēlos ievietot masīvā. 102 00:04:47,460 --> 00:04:49,280 Varu arī jaukt tipus. 103 00:04:49,280 --> 00:04:53,515 Man nav jābūt visiem veseliem skaitļiem, visiem pludiņiem, vai visām 104 00:04:53,515 --> 00:04:57,750 virknēm, kā tas ir C. 105 00:04:52,950 --> 00:04:57,750 Es tur varu sajaukt dažādus tipus. 106 00:04:57,750 --> 00:05:00,540 JavaScript var darboties dažādos veidos. 107 00:05:00,540 --> 00:05:04,030 Tāpēc tā var būt nedaudz sarežģīta, jo ir pirmā valoda, kas jāapgūst, 108 00:05:04,030 --> 00:05:07,520 kad tiek noteikta virkne ar noteikumiem un pēc tam tie tiek pārkāpti. 109 00:05:07,520 --> 00:05:09,945 Tā ir ļoti, ļoti elastīga, bet varbūt ir pārāk elastīga kā vajadzētu 110 00:05:09,945 --> 00:05:12,370 būt pirmajai valodai. 111 00:05:12,370 --> 00:05:15,806 Bet tā var darboties kā objektorientēta programmēšanas valoda. 112 00:05:15,806 --> 00:05:17,637 Objektorientēta, iespējams, ir termins, ko esat dzirdējis iepriekš, 113 00:05:17,637 --> 00:05:19,468 taču, ja nē, mēs mēģināsim šeit sniegt ātru nelielu intensīvu 114 00:05:19,468 --> 00:05:21,300 apmācības kursu. 115 00:05:21,300 --> 00:05:25,020 Objekts pēc būtības patiešām ir līdzīgs struktūrai, kas mums, cerams, 116 00:05:25,020 --> 00:05:28,740 ir pazīstama no C. 117 00:05:25,740 --> 00:05:31,987 Tagad C valodā struktūrām var būt vairāki dažādi lauki vai elementi. 118 00:05:31,987 --> 00:05:34,413 Vēl viens termins, kas ietver objektorientētu programmēšanu, ir 119 00:05:34,413 --> 00:05:36,840 rekvizīti . 120 00:05:36,840 --> 00:05:39,560 Bet šie rekvizīti vai lauki, vai dalībnieki, tāpat kā C, nekad nevar 121 00:05:39,560 --> 00:05:42,280 pastāvēt atsevišķi. 122 00:05:42,280 --> 00:05:45,666 Piemēram, ja mēs definējam struktūru šādai automašīnai — konstruēt 123 00:05:45,666 --> 00:05:49,052 automašīnu, un tajā ir divi dažādi lauki vai elementi — int gads un 124 00:05:49,052 --> 00:05:52,438 rakstzīmju modeļa desmiti vai 10 rakstzīmju virkne, ko varam 125 00:05:52,438 --> 00:05:55,825 izmantot, lai uzglabātu automašīnas modeli. 126 00:05:55,825 --> 00:05:56,950 Mēs varam darīt šādas lietas. 127 00:05:56,950 --> 00:05:59,843 Mēs varam teikt struct car Herbie, kas deklarē struct car tipa 128 00:05:59,843 --> 00:06:02,736 mainīgo ar nosaukumu Herbie, un tad mēs varam teikt, ka Herbie punkta 129 00:06:02,736 --> 00:06:05,630 gads ir vienāds ar 1963. gadu. 130 00:06:05,630 --> 00:06:06,940 Hurbie dot modelis ir vienāds ar Beetle. 131 00:06:06,940 --> 00:06:07,780 Tas ir pilnīgi pareizi i. 132 00:06:07,780 --> 00:06:10,470 Tas ir derīgs C. 133 00:06:07,780 --> 00:06:11,255 Bet mēs nekad to nevaram teikt C — mēs nekad nevaram teikt, gads ir 134 00:06:11,255 --> 00:06:14,730 vienāds ar 1963., modelis ir vienāds ar Beetle. 135 00:06:14,730 --> 00:06:17,325 Tagad mēs to nevaram teikt, jo gads un modelis ir ļoti svarīgi, lai 136 00:06:17,325 --> 00:06:19,920 saprastu, kas ir strukturāla automašīna. 137 00:06:19,920 --> 00:06:21,270 Tie ir daļa no konstrukcijas automašīnas. 138 00:06:21,270 --> 00:06:23,550 Un tāpēc, ja mēs kādreiz izmantojam gadu un modeli, mēs nevaram tos 139 00:06:23,550 --> 00:06:25,830 izmantot abstrakti. 140 00:06:25,830 --> 00:06:30,510 Mums vienmēr šīs lietas ir jāsaista ar konkrētu automašīnu. 141 00:06:30,510 --> 00:06:33,210 Tātad tas nav labi. 142 00:06:33,210 --> 00:06:38,130 Objektiem papildus laukiem, elementiem vai rekvizītiemir arī kaut 143 00:06:38,130 --> 00:06:43,050 kas, ko sauc par metodēm, kas ir līdzīgi it kā, ja C struktūrai būtu 144 00:06:43,050 --> 00:06:47,970 funkcija, kas varētu attiekties tikai uz šo struktūru. 145 00:06:47,970 --> 00:06:50,505 Tāpēc šķiet, ka mums ir funkcija, kurā struktūras ir vienīgās lietas, 146 00:06:50,505 --> 00:06:53,040 kas jāiekļauj. 147 00:06:53,040 --> 00:06:54,570 Tagad tā ir C. 148 00:06:54,570 --> 00:07:00,990 Bet mēs nevaram definēt funkciju struktūras izliektajās iekavās. 149 00:07:00,990 --> 00:07:03,810 Tas ir vairāk — tā ir objektorientēta programmēšana. 150 00:07:03,810 --> 00:07:06,250 Tā atšķiras. 151 00:07:06,250 --> 00:07:09,000 Bet, tāpat kā rekvizīti , arī metodes pašas par sevi nepastāv. 152 00:07:09,000 --> 00:07:11,416 Tas nav kā funkcija, kas eksistē tikai abstrakti. 153 00:07:11,416 --> 00:07:16,590 Tā ir funkcija, kas pastāv tikai šajā gadījumā kā objekta kontekstā. 154 00:07:16,590 --> 00:07:19,890 Tātad, kur mēs to varētu izdarīt C — funkcija iekavās objektā, kur 155 00:07:19,890 --> 00:07:23,190 objekts ir izsaucamās funkcijas parametrs — tas nav uz objektu 156 00:07:23,190 --> 00:07:26,490 orientēts stils. 157 00:07:26,490 --> 00:07:31,170 Objektorientēta nozīmē, ka objekts ir visa pamatā, un mēs sauksim šo 158 00:07:31,170 --> 00:07:35,850 funkciju, kas ir objekta daļa. 159 00:07:35,850 --> 00:07:36,420 Labi? 160 00:07:36,420 --> 00:07:41,220 Tātad šādi izskatās objektorientētā programmēšana ļoti, ļoti 161 00:07:41,220 --> 00:07:46,020 elementārā formā: ir funkcijas, kas ir saistītas vai saistītas ar 162 00:07:46,020 --> 00:07:50,820 objektiem, un mēs tās saucam šādi - norādot objektu un sakot, ka 163 00:07:50,820 --> 00:07:55,620 vēlamies kādu funkciju izpildīt šim objektam. 164 00:07:55,620 --> 00:07:59,415 Objekta lauki un metodes pēc būtības ir patiešām līdzīgasvārdnīcai, 165 00:07:59,415 --> 00:08:03,210 kuru jūs, iespējams, pazīstat vai atceraties no Python. 166 00:08:03,210 --> 00:08:06,741 Piemēram, mēs varētu izveidot kaut ko līdzīgu šim — var Herbiw ir 167 00:08:06,741 --> 00:08:10,273 vienāds — izliektās iekavas, tagad, nevis kvadrātiekavas, tās ir 168 00:08:10,273 --> 00:08:13,805 izliektās figūriekavas — un pēc tam ar komatu atdalīts saraksts ar 169 00:08:13,805 --> 00:08:17,336 atslēgu vērtību pāriem kurā ir ievietots 1963. gads. Piemēram, sakot, 170 00:08:17,336 --> 00:08:20,868 ka Herbiepunkta gads ir vienāds ar 1963. gadu C, un Herbiepunkta 171 00:08:20,868 --> 00:08:24,400 modelis ir vienāds ar Beetle. 172 00:08:24,400 --> 00:08:28,125 Tas ir līdzīgi tam, kā mēs to pašu darītu JavaScript, izveidojot 173 00:08:28,125 --> 00:08:31,850 objektu un uzreiz piešķirot tam pāris rekvizītus. 174 00:08:31,850 --> 00:08:32,350 Labi. 175 00:08:32,350 --> 00:08:35,074 Tagad atgriezīsimies pie cilpām, jo es jau minēju iepriekš, ir dažas 176 00:08:35,074 --> 00:08:37,799 dažādas jaunas cilpas, kuras mēs varam izmantot JavaScript. 177 00:08:37,799 --> 00:08:41,074 Tagad, kad mums ir šis objekts, kā mēs varētu atkārtot visus šī 178 00:08:41,074 --> 00:08:44,350 objekta galveno vērtību pārus? 179 00:08:44,350 --> 00:08:48,130 Vai patiesībā, kā mēs atkārtojam visus masīva elementus, papildus 180 00:08:48,130 --> 00:08:51,910 izmantojot for cilpu, while cilpu vai do-while cilpu? 181 00:08:51,910 --> 00:08:56,050 Tātad programmā Python mēs redzējām kaut ko līdzīgu šim — atslēgai 182 00:08:56,050 --> 00:09:00,191 sarakstā, un tad mums būtu kāds kods, kurā mēs izmantotu taustiņu 183 00:09:00,191 --> 00:09:04,332 katrāpunktā no turienes uz leju — saraksta i-th elementa vietā. 184 00:09:04,332 --> 00:09:07,176 Programmā JavaScript to nevar izdarīt, taču mēs varam darīt kaut ko 185 00:09:07,176 --> 00:09:10,020 līdzīgu objektam var key. 186 00:09:10,020 --> 00:09:11,860 Un pēc tam atveriet izliekto iekavu i. 187 00:09:11,860 --> 00:09:16,190 Un starp šīm izliektajām iekavām mēs varam izmantot objekta 188 00:09:16,190 --> 00:09:20,520 kvadrātiekavas taustiņu, lai atsauktos uz objekta atslēgas elementu 189 00:09:20,520 --> 00:09:24,850 vai atslēgas objekta vērtības pāru kopu. 190 00:09:24,850 --> 00:09:28,455 Mums ir arī nedaudz atšķirīga objekta atslēgas variācij - , tā vietā, 191 00:09:28,455 --> 00:09:32,060 lai izmantotu objekta kvadrātiekavas taustiņu, tagad varam atsaukties 192 00:09:32,060 --> 00:09:35,665 uz atkārtošanos visās vērtībās — pretstatā tai i, kas atkārtojas pa 193 00:09:35,665 --> 00:09:39,270 visiem taustiņiem, šī atkārtos visas vērtības. 194 00:09:39,270 --> 00:09:42,881 Tātad mēs varam aptvert abas atslēgas vērtību pāra puses, izmantojot 195 00:09:42,881 --> 00:09:46,492 var taustiņu in vai var taustiņu of. 196 00:09:46,492 --> 00:09:48,711 Šeit ir masīva piemērs, kurā mēs izmantosim šos divus dažādos cilpas 197 00:09:48,711 --> 00:09:50,930 tipus. 198 00:09:50,930 --> 00:09:53,477 Tātad šeit ir nedēļas masīvs, kurā ir 7 elementi — pirmdiena, 199 00:09:53,477 --> 00:09:56,025 otrdiena, trešdiena, ceturtdiena, piektdiena, sestdiena, svētdiena. 200 00:09:56,025 --> 00:10:00,240 Un es vēlos izmantot četru dienu masīvu nedēļā. 201 00:10:00,240 --> 00:10:03,990 Tāpēc es vēlos izmantot for in cilpu un vēlos konsolēt dot log . 202 00:10:03,990 --> 00:10:06,420 Console dot log ir JavaScript ekvivalents print f. 203 00:10:06,420 --> 00:10:08,510 Tam var piekļūt, izmantojot izstrādātāja rīkus lielākajā daļā 204 00:10:08,510 --> 00:10:10,601 mūsdienu pārlūkprogrammu. 205 00:10:10,601 --> 00:10:12,600 Kas notiks, kad viņi to izdrukās? 206 00:10:12,600 --> 00:10:14,769 Tas izdrukās visu atslēgu sarakstu. 207 00:10:14,769 --> 00:10:17,810 Šajā masīvā tiešām nav atslēgu — ir virkne rādītāju. 208 00:10:17,810 --> 00:10:21,675 Tātad tas izdrukās 0, 1, 2, 3, 4, 5, 6, jo manā masīvā ir septiņi 209 00:10:21,675 --> 00:10:25,540 elementi, un es reģistrēju tos elementus, par kuriem runāju. 210 00:10:25,540 --> 00:10:29,036 Ja es tā vietā gribētu izdrukāt dienas, es izmantotu for of cilpu, un 211 00:10:29,036 --> 00:10:32,533 es konsolē izdrukātu sekojošo — pirmdiena, otrdiena, trešdiena, 212 00:10:32,533 --> 00:10:36,030 ceturtdiena, piektdiena, sestdiena, svētdiena. 213 00:10:36,030 --> 00:10:37,990 Ko darīt, ja es vēlos saistīt informāciju? 214 00:10:37,990 --> 00:10:41,095 Tāpēc atcerieties, ka mēs varam saistīt dažādas virknes. 215 00:10:41,095 --> 00:10:42,220 Mēs to varētu izdarīt Python. 216 00:10:42,220 --> 00:10:45,360 Mēs to varam izdarīt arī šeit JavaScript. 217 00:10:45,360 --> 00:10:46,980 Un mēs to darām, izmantojot plus. 218 00:10:46,980 --> 00:10:49,475 Tātad, ja es vēlos konsolēt dot log dažādas virknes, kas savienotas 219 00:10:49,475 --> 00:10:51,971 kopā, es vienkārši izmantoju plus, lai to izdarītu. 220 00:10:51,971 --> 00:10:53,720 Bet šeit var konsolēt maz virkņuvai ne? 221 00:10:53,720 --> 00:10:56,460 Ja es izmantoju plus, tagad tas nozīmē divas dažādas lietas. 222 00:10:56,460 --> 00:10:58,830 Es gribu virknes savienot kopā, bet varbūt šeit, es vēlos tās 223 00:10:58,830 --> 00:11:01,200 pievienot. 224 00:11:01,200 --> 00:11:04,930 Es tiešām aicinu jūs apskatīt, kas notiek, ja nedēļas masīvu 225 00:11:04,930 --> 00:11:08,660 ierakstāt kādā JavaScript un pēc tam izveidojat cilpu, kas atkārtojas 226 00:11:08,660 --> 00:11:12,390 un konsole to reģistrē. 227 00:11:12,390 --> 00:11:15,550 Var gadīties, ka saskarsieties ar kaut ko negaidītu 228 00:11:15,550 --> 00:11:18,540 Tātad JavaScript veic vislabāko minējumu, un tiek pieņemts, ka šī 229 00:11:18,540 --> 00:11:21,531 diena un 1 ir abas virknes, lai gan patiesībā es vēlos tos burtiski 230 00:11:21,531 --> 00:11:24,522 pievienot kopā, jo tie ir skaitļi. 231 00:11:24,522 --> 00:11:26,396 Bet par laimi JavaScript dod mums iespēju to apiet, izmantojot 232 00:11:26,396 --> 00:11:28,271 funkciju parse int. 233 00:11:28,271 --> 00:11:31,167 Tagad tas mums dos to, ko mēs ceram sagaidīt . 234 00:11:31,167 --> 00:11:34,527 No otras puses, tas mums dos kaut ko tādu, ko mēs negaidām. 235 00:11:34,527 --> 00:11:36,831 Bet tas ir tikai gadījums, kad mēs izmantojam vienu un to pašu 236 00:11:36,831 --> 00:11:39,135 operatoru, lai apzīmētu divas dažādas lietas, un programmas valodai 237 00:11:39,135 --> 00:11:41,440 dažreiz ir jāizdara vislabākais minējums. 238 00:11:41,440 --> 00:11:44,930 Tāpēc ne vienmēr ir lieliski, ka mūsdienās valodas bieži neprasa mums 239 00:11:44,930 --> 00:11:48,420 norādīt datu tipu — ja mēs varētu šeit norādīt datu tipu, mēs to 240 00:11:48,420 --> 00:11:51,911 varētu skaidri noteikt. 241 00:11:51,911 --> 00:11:53,835 Bet šeit, izmantojot JavaScript, tā uzskata, ka tas mums ir ļoti 242 00:11:53,835 --> 00:11:55,760 noderīgs, jo nenorāda tipu. 243 00:11:55,760 --> 00:11:57,630 Un tas dos mūsu labāko minējumu par to, ko mēs vēlamies darīt, bet 244 00:11:57,630 --> 00:11:59,501 dažreiz tas uzminēs nepareizi. 245 00:11:59,501 --> 00:12:03,270 Bet tas dod mums veidus, kā to apiet, ja tas patiešām uzmin nepareizi. 246 00:12:03,270 --> 00:12:07,510 Tātad masīvi patiesībā ir īpašs objekta gadījums. 247 00:12:07,510 --> 00:12:10,510 Un patiesībā JavaScript programmā viss ir īpašs objekta gadījums. 248 00:12:10,510 --> 00:12:13,380 X, jebkurš mainīgais, var x ir vienāds ar 44 — tas ir objekts, kuram 249 00:12:13,380 --> 00:12:16,250 vienkārši ir viens rekvizīts. 250 00:12:16,250 --> 00:12:19,295 Masīvi ir objekts, kuram ir vairāki rekvizīti, kā arī dažas noteiktas 251 00:12:19,295 --> 00:12:22,340 metodes, kuras var uz tiem tikt izmantotas. 252 00:12:22,340 --> 00:12:26,817 Tātad mēs varam saukt izmēra metodi vai pop, vai push, vai shift. 253 00:12:26,817 --> 00:12:29,013 Un es likšu jums izdomāt vai veikt kādu pētījumu par to, kas ir šīs 254 00:12:29,013 --> 00:12:31,210 dažādās lietas. 255 00:12:31,210 --> 00:12:34,055 Taču pietiks ar to, ka tās ir funkcijas, kas būtībā ir tik ļoti 256 00:12:34,055 --> 00:12:36,900 iestrādātas tajā, ko nozīmē būt masīvam, ka mēs varam tās vienkārši 257 00:12:36,900 --> 00:12:39,745 izsaukt, vispirms tās nerakstot. 258 00:12:39,745 --> 00:12:40,537 Tas ir diezgan forši. 259 00:12:40,537 --> 00:12:43,564 Šeit ir vēl viena lieliska lieta, ko varat darīt ar masīviem — tiem 260 00:12:43,564 --> 00:12:46,592 ir cita metode, ko sauc par karti, kas pamatā ļauj mums piemērot 261 00:12:46,592 --> 00:12:49,620 funkciju katram atsevišķam masīva elementam. 262 00:12:49,620 --> 00:12:53,710 Un jo īpaši šis ir lielisks piemērs anonīmas funkcijas izmantošanai. 263 00:12:53,710 --> 00:12:55,940 Tāpēc apskatīsim, kā mēs varētu izmantot anonīmu funkciju, un kāpēc 264 00:12:55,940 --> 00:12:58,170 tas varētu būt noderīgi. 265 00:12:58,170 --> 00:12:59,704 Šeit ir masīvs, ko sauc par nums . 266 00:12:59,704 --> 00:13:03,180 Tajā ir pieci elementi — 1, 2, 3, 4 un 5. 267 00:13:03,180 --> 00:13:07,560 Tagad es vēlos viņiem piesaistīt kādu funkciju. 268 00:13:07,560 --> 00:13:09,440 Tātad, ko es šeit saku, nums ir vienāds, tāpēc es kaut ko darīšu ar 269 00:13:09,440 --> 00:13:11,320 nums. 270 00:13:11,320 --> 00:13:14,580 Es to piešķiršu atpakaļ uz nums. 271 00:13:14,580 --> 00:13:16,985 Skaitļi ir vienādi ar nums dot map  — un atcerieties, karte uzņem 272 00:13:16,985 --> 00:13:19,390 funkciju. 273 00:13:19,390 --> 00:13:24,930 Tā ir funkcija, ko vēlos pielietot visiem šī masīva elementiem. 274 00:13:24,930 --> 00:13:28,620 Viena lieta, ko es varētu darīt, ir vienkārši uzrakstīt šo funkciju 275 00:13:28,620 --> 00:13:32,310 kaut kur citur un, ka katra vērtība tiks dubultota. 276 00:13:32,310 --> 00:13:35,220 Pieņemsim, ka es uzrakstīju funkciju, ko sauc par dubultskaitļiem. 277 00:13:35,220 --> 00:13:38,685 Es varētu teikt, nums r vienādi a nums dot map iekavas 278 00:13:38,685 --> 00:13:42,150 dubultskaitļiem , un tas tikai dubulto katru skaitli. 279 00:13:42,150 --> 00:13:43,510 Tas būtu labi. 280 00:13:43,510 --> 00:13:46,106 Bet šeit ievērojiet, ka es izmantoju šo funkcijas atslēgas vārdu un 281 00:13:46,106 --> 00:13:48,703 sniedzu parametru sarakstu — šajā gadījumā num —, taču es nepiešķiru 282 00:13:48,703 --> 00:13:51,300 šai funkcijai nosaukumu. 283 00:13:51,300 --> 00:13:53,130 Kāpēc es šai funkcijai nedodu nosaukumu? 284 00:13:53,130 --> 00:13:55,020 Nu, es tikai veicu šo kartēšanu. 285 00:13:55,020 --> 00:13:57,327 Man nekad vairs nevajadzēs šos skaitļus dubultot. 286 00:13:57,327 --> 00:14:01,263 Kāpēc man jāpārblīvē funkcijas nosaukumu telpu un jāpiešķir tai 287 00:14:01,263 --> 00:14:05,200 nosaukums, ja es to nekad vairs neizmantošu ārpus šī konteksta? 288 00:14:05,200 --> 00:14:07,756 Tas ir diezgan ērti, ka šajā gadījumā mēs varam faktiski izmantot šo 289 00:14:07,756 --> 00:14:10,313 funkciju, nepiešķirot tai nosaukumu, un tomēr likt tai darīt to, ko 290 00:14:10,313 --> 00:14:12,870 vēlamies. 291 00:14:12,870 --> 00:14:15,380 Tātad viss, ko es daru šajās karšu iekavās, ir atvērtās iekavas 292 00:14:15,380 --> 00:14:17,890 pirmajā rindiņā, bet aizvērtās iekavas faktiski atrodas trešajā 293 00:14:17,890 --> 00:14:20,400 rindā. 294 00:14:20,400 --> 00:14:23,655 Un starp iekavām, kur tiek norādīts kartējamais parametrs , es 295 00:14:23,655 --> 00:14:26,911 burtiski definēju visu funkciju. 296 00:14:26,911 --> 00:14:29,910 Un tad, ja es izpildīšu šo koda rindiņu, kas notiks ar nums ? 297 00:14:29,910 --> 00:14:32,278 Nu, jūs droši vien varat uzminēt, tas tikai dubultos katru skaitļa 298 00:14:32,278 --> 00:14:34,646 elementu. 299 00:14:34,646 --> 00:14:37,573 Labi, vēl viena lieta, ko es vēlētos paskaidrot par JavaScript, ir 300 00:14:37,573 --> 00:14:40,500 notikumu jēdziens. 301 00:14:40,500 --> 00:14:42,739 Tātad notikums ir kaut kas tāds, kas iet roku rokā ar HTML 302 00:14:42,739 --> 00:14:44,978 JavaScript, un tā ir atbilde lietotājam, kas kaut ko dara tīmekļa 303 00:14:44,978 --> 00:14:47,217 lapā. 304 00:14:47,217 --> 00:14:49,050 Piemēram, viņi noklikšķina uz pogas. 305 00:14:49,050 --> 00:14:50,970 Iespējams, lapa ir ielādēta , piemēram, pēc tam, kad lietotājs to ir 306 00:14:50,970 --> 00:14:52,890 atjauninājis 307 00:14:52,890 --> 00:14:55,920 Varbūt tie virza kursoru virs kādas lapas daļas vai tamlīdzīgi. 308 00:14:55,920 --> 00:14:57,930 Visas šīs lietas ir notikumi. 309 00:14:57,930 --> 00:15:00,679 Un JavaScript atbalsta tā saukto notikumu administratoru , kas ir 310 00:15:00,679 --> 00:15:03,428 kāds JavaScript kods, kas tiks izpildīts, tiklīdz šis notikums ir 311 00:15:03,428 --> 00:15:06,177 noticis. 312 00:15:06,177 --> 00:15:08,260 Tādējādi tas ļauj mūsu vietnes lapai būt ļoti interaktīvai. 313 00:15:08,260 --> 00:15:10,773 Piemēram, mēs ierakstām lodziņā — mums varētu būt notikumu 314 00:15:10,773 --> 00:15:13,286 administrators , kas parāda ziņojumu, kurā teikts, lūdzu, ievadiet 315 00:15:13,286 --> 00:15:15,800 savu paroli. 316 00:15:15,800 --> 00:15:19,060 Tātad vispirms — tas ir tikai tukšs lauks, kas nepasaka neko. 317 00:15:19,060 --> 00:15:21,390 Jūs sākat tajā rakstīt, un tad šis lodziņš parādās jo jūs sākāt 318 00:15:21,390 --> 00:15:23,720 rakstīt, un tas ir notikums lapā. 319 00:15:23,720 --> 00:15:26,465 Un tas liek jums darīt kaut ko tādu, ko norāda JavaScript notikumu 320 00:15:26,465 --> 00:15:29,210 administrators . 321 00:15:29,210 --> 00:15:32,942 Daudzi HTML elementi atbalsta pasākumus kā atribūtu. 322 00:15:32,942 --> 00:15:34,900 Tātad, šeit ir patiešām vienkārša HTML piemērs. 323 00:15:34,900 --> 00:15:39,230 Man ir vadība un korpuss , un korpusa iekšpusē ir divi taustiņi . 324 00:15:39,230 --> 00:15:41,870 Un viņiem ir šis atribūts, ko sauc par klikšķi. 325 00:15:41,870 --> 00:15:45,350 Noklikšķināšana būtībā ir komanda notikumu administratoram 326 00:15:45,350 --> 00:15:48,740 Tāpēc es vēlos, lai kaut kas notiktu, noklikšķinot uz taustiņiem . 327 00:15:48,740 --> 00:15:51,994 Šobrīd tur nav nekādu notikumu, bet es varu kaut ko ievietot lai, 328 00:15:51,994 --> 00:15:55,249 noklikšķinot uz kāda no šiem taustiņiem , tiktu izsaukta tā funkcija, 329 00:15:55,249 --> 00:15:58,504 kas atrodas starp pēdiņām. 330 00:15:58,504 --> 00:16:00,949 Piemēram, JavaScript mēs varam uzrakstīt patiešām vispārīgu notikumu 331 00:16:00,949 --> 00:16:03,394 administratoru , kas izveido notikuma objektu un mums pateiks, kuršno 332 00:16:03,394 --> 00:16:05,840 šiem diviem taustiņiem tika noklikšķināts. 333 00:16:05,840 --> 00:16:07,660 Un tas varētu izskatīties apmēram šādi. 334 00:16:07,660 --> 00:16:09,675 Noklikšķināšanas taustiņš ir vienāds ar brīdinājuma nosaukuma 335 00:16:09,675 --> 00:16:11,690 notikumu. 336 00:16:11,690 --> 00:16:16,100 Ja mēs to darām, mēs būtībā esam iestatījuši savu HTML tā, ka, 337 00:16:16,100 --> 00:16:20,510 noklikšķinot uz viena taustiņa vai otra taustiņa , tiks izsaukta 338 00:16:20,510 --> 00:16:24,920 brīdinājuma nosaukuma funkcija un tikts nodots notikums. 339 00:16:24,920 --> 00:16:28,265 Lapa automātiski ģenerē notikumu, un tajā būtībā ir visa informācija 340 00:16:28,265 --> 00:16:31,610 par tikko notikušo. 341 00:16:31,610 --> 00:16:34,301 Un no šīs informācijas mēs varam iegūt vairāk informācijas. 342 00:16:34,301 --> 00:16:36,372 Piemēram, šeit redzams , kā varētu izskatīties brīdinājuma nosaukuma 343 00:16:36,372 --> 00:16:38,444 funkcija, un ievērojiet, ka šeit es apstiprinu arī notikuma 344 00:16:38,444 --> 00:16:40,516 parametru. 345 00:16:40,516 --> 00:16:41,390 Ko tad es daru? 346 00:16:41,390 --> 00:16:44,450 Es saņemu jaunu JavaScript lokālo mainīgo, ko sauc par trigeri, un es 347 00:16:44,450 --> 00:16:47,510 prasu šī notikuma avota elementu. 348 00:16:47,510 --> 00:16:50,750 Un būtībā tas man saka to, kas ir lapas elements, ar kuru tika veikta 349 00:16:50,750 --> 00:16:53,990 mijiedarbība un kas izraisīja šo notikumu? 350 00:16:53,990 --> 00:16:56,960 Citiem vārdiem sakot, kāds elements tika efektīvi nodots šai 351 00:16:56,960 --> 00:16:59,930 funkcijai. 352 00:16:59,930 --> 00:17:02,125 Jo tas atkal tiek ģenerēts automātiski. 353 00:17:02,125 --> 00:17:04,890 Lapa zina, kuram taustiņam mēs pieskārāmies, un tāpēc būtībā, kas 354 00:17:04,890 --> 00:17:07,655 šeit notiek, šs taustiņš  — neatkarīgi no tā, kurs no abiem — tiek 355 00:17:07,655 --> 00:17:10,420 nodota šai funkcijai. 356 00:17:10,420 --> 00:17:13,936 Pēc tam, runājot par dokumenta objekta modeli, es varu piekļūt šī 357 00:17:13,936 --> 00:17:17,453 aktivizētāja iekšējam HTML, lai noskaidrotu, kurš taustiņš tika 358 00:17:17,453 --> 00:17:20,970 noklikšķināts. 359 00:17:20,970 --> 00:17:22,010 Kas ir iekšējais HTML? 360 00:17:22,010 --> 00:17:24,450 Ļaujiet man uz mirkli paiet dažus slaidus atpakaļ. 361 00:17:24,450 --> 00:17:27,560 Iekšējais HTML ir tas, kas atrodas starp taustiņu tagiem. 362 00:17:27,560 --> 00:17:29,965 Šajā gadījumā pirmais taustiņš ir iekšējais HTML un otrais taustiņš 363 00:17:29,965 --> 00:17:32,370 ir arī iekšējais HTML. 364 00:17:32,370 --> 00:17:35,157 Tātad, kas notiek, kad es noklikšķināšu uz šiem taustiņiem , tas mani 365 00:17:35,157 --> 00:17:37,945 brīdinās, ka jūs noklikšķinājāt uz pirmā taustiņa, ja es 366 00:17:37,945 --> 00:17:40,732 noklikšķināju uz pirmā, vai, ja jūs noklikšķinājāt uz otrā taustiņa, 367 00:17:40,732 --> 00:17:43,520 tas brīdinās, ka noklikšķinājāt uz otrā. . 368 00:17:43,520 --> 00:17:46,580 Tagad atkal mēs tikai pieskaramies JavaScript virsmai, bet es vēlējos 369 00:17:46,580 --> 00:17:49,640 sniegt jums priekšstatu par dažādajām lietām, ko varat darīt, lai pēc 370 00:17:49,640 --> 00:17:52,700 tam varētu doties uz priekšu, apskatīt dokumentāciju un redzēt ļoti 371 00:17:52,700 --> 00:17:55,760 plašo virkni lietu, ko varat darīt arī, vienkārši piemērojot dažus 372 00:17:55,760 --> 00:17:58,820 pamata principus, par kuriem jau esam iemācījušies CS50, tā plaši 373 00:17:58,820 --> 00:18:01,880 paplašinot savas zināšanas. 374 00:18:01,880 --> 00:18:02,790 Es esmu Dags Loids. 375 00:18:02,790 --> 00:18:04,670 Šis ir CS50.