[CHWARAE CERDDORIAETH] DOUG LLOYD: Felly erbyn hyn rydym yn hen manteision yn rhaglennu ar y we, dde? Ac rydym wedi cynnwys nifer o ieithoedd mewn fideos unigol. Ac yn awr gadewch i ni wneud un yn fwy, JavaScript. Yn gyntaf y newyddion da, JavaScript yn rhaglennu modern iaith yn debyg iawn PHP y mae ei cystrawen yn deillio o C, felly dyna lle da i ddechrau. Mae'n ymwneud mor hen ag PHP, yn ogystal, ar ôl bod o gwmpas tua 20 mlynedd. Fe'i dyfeisiwyd o gwmpas yr un pryd â PHP. A JavaScript mewn gwirionedd 'n bert sylfaenol i'r profiad y defnyddiwr o'r we. Yn wir, mae yna tair iaith fy mod Byddai dweud fath o wneud iawn am y profiad y defnyddiwr o ryngweithio gyda'r wefan, html, css, a JavaScript. Ac felly yn awr gadewch i ni siarad â ychydig bach am JavaScript. Y newyddion drwg, fodd bynnag, gyda JavaScript yw fod yn gosod llawer o reolau ar gyfer ei hun, ac yna yn eu torri. A gall fod yn JavaScript mewn gwirionedd math o heriol i ddysgu, am ei fod yn wahanol i C a PHP, sy'n cael eu strwythuro iawn ac mae ganddynt reolau anhyblyg iawn am sut y gall pethau'n gweithio. JavaScript wedi garedig o gotten mor hyblyg efallai nad yw pethau'n mynd i yn gweithio y ffordd yr ydym yn disgwyl iddynt, ac efallai ein bod ddim yn wir ddysgu ein hiaith raglennu gyntaf fel JavaScript. Felly efallai oherwydd nad yw'n gwneud hynny gosod ei hun unrhyw reolau, ac nid yw'n gwneud 'n sylweddol gorfodi arferion codio da. Ond nawr rydym wedi datblygu gobeithio rhai arferion codio da, ac felly gallwn ddechrau Foray i mewn i JavaScript ychydig. I ysgrifennu JavaScript, yn debyg i agor i fyny ffeil C gyda C estyniad dot neu ffeil PHP gydag estyniad dot PHP, i gyd mae angen i ni ei wneud yw agor ffeil gyda estyniad ffeil y dot js. Nid oes angen i ni gael unrhyw arbennig amffinyddion fel y gwnaethom yn PHP. Mae'r math hwnnw o ongl braced PHP question mark ein bod yn eu defnyddio i o hynny, y ffordd byddwn yn dweud ein borydd bod yr hyn sydd gennym yn JavaScript yw trwy gynnwys mewn tag html, a byddwn yn gweld ychydig am sut i wneud hynny mewn dim ond hyn o bryd. Y peth arall sy'n gwneud JavaScript wahanol, fodd bynnag, yw ei fod yn rhedeg ochr y cleient. Felly yn cofio gyda PHP sy'n gallem byth yn wir yn gweld mae'r PHP a tanlinellu gwefan. Os ydym erioed wedi gweld y tudalen ffynhonnell, byddem yn unig gweld y html a oedd yn a gynhyrchir gan y PHP. Ond JavaScript yn rhedeg ochr y cleient. Mae eich JavaScript yn rhedeg ar eich cyfrifiadur. A dyna pam y gallwch chi ei wneud pethau yn hoffi ychwanegu atalyddion. Iawn? Blocio ad yn cael ei wneud fel arfer gan gan ladd pob un o'r JavaScript sy'n cael ei rhedeg ar wefan benodol. Ac oherwydd y byddai'n rhaid i rhedeg ar eich ochr y cleient peiriant, gallwch atal y JavaScript ar gyfer rhedeg yn gyfan gwbl. Mae hynny hefyd yn golygu pan fyddwch yn defnyddio gwefan sy'n cynnwys JavaScript, mae'n rhaid i chi anfon y ffynhonnell JavaScript cod fel rhan o'ch ymateb http i'r cleient pan fyddant yn gofyn am hynny. Ac felly nid ydych efallai am eu defnyddio JavaScript i wneud pethau 'n sylweddol sensitif fel gwybodaeth pasio am cyfrineiriau defnyddwyr yn ôl a allan, gan eu bod mewn gwirionedd yn mynd i dderbyn yr holl o'r cod ffynhonnell, nid dim ond y html sy'n cael ei gynhyrchu, fel y byddai'n wir dweud gyda PHP. Felly sut ydyn ni'n cynnwys JavaScript yn ein html i ddechrau? Wel, yn debyg i CSS, mewn gwirionedd, yn fath o sut yr ydym yn ei wneud yma. Gyda CSS gennym tagiau arddull. Ac tu mewn tagiau arddull hynny, gallwn ddiffinio dalen arddull CSS. Yn yr un modd â JavaScript gallwn agor tagiau sgript, tag html arall nad wnaethom siarad am yn ein fideo html, ac ysgrifennu JavaScript mewn rhwng y tagiau sgript hynny. Hefyd er, fel CSS, rydym yn Gallai cysylltu y tu allan i ffeiliau CSS ac yn tynnu i mewn i'n rhaglen y ffordd honno. Gyda CSS y gallwn hefyd, esgus i mi, gyda JavaScript gallwn hefyd nodi'r ffynhonnell priodoledd y tag sgript i gysylltu JavaScript ar wahân, fel nad ydych yn ei wneud rhaid ei ysgrifennu mewn rhwng tagiau sgript, rydym yn Gall gysylltu wrth ddefnyddio y tag sgript hefyd. Ac yn union fel gyda yr achos gyda CSS lle rydym yn argymell ei fod yn ôl pob tebyg yn eich diddordeb gorau i ysgrifennu eich CSS mewn ffeil ar wahân rhag ofn mae angen i chi ei newid, yn yr un modd yn ei wneud rydym yn argymell eich bod yn ysgrifennu eich JavaScript mewn ffeiliau ar wahân a defnyddio'r ffynhonnell tagiau sgript priodoli i glymu eich JavaScript i mewn i'ch html, eich tudalen we. Newidynnau Felly JavaScript, yr ydym chi helpu ddechrau siarad am y gystrawen yma. A byddwn yn mynd drwy y math hwn o gyflym, oherwydd ein bod wedi gwneud hyn yn PHP, felly Dylai hyn i gyd fod yn eithaf cyfarwydd. Felly newidynnau yn JavaScript yn debyg iawn i PHP newidynnau. Does dim math rhagnodwr, a pan fyddwch yn cyflwyno amrywiol, chi o flaen 'i ag y gair allweddol var. Yn PHP byddem yn gwneud rhywbeth fel hyn, arwydd doler x. Dyna sut yr ydym yn dangos newidyn, ond dim, rydym yn peidiwch â sôn am y math y newidyn o gwbl. Byddem yn dweud rhywbeth fel doler arwydd x yn hafal 44 yn PHP. Os byddwn yn gwneud y un peth yn JavaScript, byddem yn dweud var x yn hafal 44. Felly var yn fath o ein ffordd ni o gyflwyno amrywiol. Dyna efallai ychydig yn fwy 'n athrylithgar na dim ond newidyn arwydd ddoler. Unwaith eto, gan nad oes mathau data, gallem wneud hyn gydag unrhyw fath ddata, llinynnau, Byddai unrhyw beth arall i gyd yn var. Conditionals, pob un o'n hen ffrindiau o C a PHP yn dal i fod ar gael, felly mae gennym os, arall os, arall, newid a cwestiwn colon marc. Switsh parhau i fod yn hyblyg gan ei fod yn Roedd yn PHP, ond mae pob un o'r rhain rydych yn gyfarwydd â erbyn hyn. Ac yn yr un modd â dolenni yn cael eu yr hen ffefrynnau o amser, wneud ychydig, ac am dal ar gael i ni. Hynny eisoes rydym yn gwybod llawer o'r sylfaenol math JavaScript o hanfodion dim ond yn rhinwedd gael cryn dipyn gwybodaeth bellach am C a PHP. Beth am swyddogaethau mewn JavaScript? Wel, yn debyg i PHP pob swyddogaeth yn a gyflwynwyd gyda'r allweddair swyddogaeth. Yr ydych yn dweud swyddogaeth, ac yna rydych dechrau ddiffinio eich swyddogaeth. Beth sy'n ychydig yn wahanol am JavaScript, fodd bynnag, yw y gallu i gael hyn a elwir yn swyddogaeth dienw. Felly, gallwch ddiffinio swyddogaethau sydd heb enw. Mae hyn yn rhywbeth yr ydym yn ddim wir wedi ei weld o'r blaen. Byddwn yn wir yn defnyddio'r cysyniad o swyddogaeth dienw ychydig yn ddiweddarach yn y fideo, gan ei fod yn chi helpu gwneud ychydig yn fwy o synnwyr yn y cyd-destun pan fyddwn yn ei weld mewn sefyllfa benodol fy mod wedi Crafted yma. Ond gadewch i ni fwrw golwg ar yr hyn y mae JavaScript syml Gallai swyddogaeth edrych. Felly, yr wyf wedi mynd yn ei flaen ac agor fy IDE CS50 ac yr wyf eisoes wedi rhedeg Apache i ddechrau ar fy rhedeg gweinydd. Ac yr wyf yn cael y ffeil agor enw Home.html. A byddaf chwyddo i mewn ychydig bach yma. Ac yn y bôn, gallwch weld y Home.html yn unig yw criw o fotymau. A dwi'n hawlio ar y brig yma mai hwn yw'r adran JavaScript deunyddiau. Felly mae 'na griw o fotymau yma, ond beth botymau hyn mewn gwirionedd yn ei wneud? Wel, byddwn yn ben ar at fy IED, ac yr wyf Home.html wedi agor yma. Ar y cychwyn cyntaf, dyma lle rydw i'n cysylltu ym mhob un fy ffeiliau ffynhonnell JavaScript. Iawn? Felly, yr wyf wedi anonymous.js, clock.js, Im 'yn arfer y priodoledd ffynhonnell y tag sgript i gysylltu yn y ffeil. Felly, nid wyf wedi ysgrifennu unrhyw JavaScript uniongyrchol i mewn y ffeil, ond rwyf wedi tynnu yn yr holl JavaScript Rydw i wedi ysgrifennu ar wahân. Ac os ydym yn sgroliwch i lawr yma, mae hyn yn Dylai gyd yn edrych braidd yn gyfarwydd gydag ychydig o gystrawen newydd. Gennym yma tag pennawd ar gyfer swyddogaethau ac yna botwm. Mae gen i fewnbwn sy'n botwm fath, ac i bob golwg pan fyddaf yn clicio arno, Rydw i'n mynd i alw rhai swyddogaeth dyddiad effro. A dyma sut y gallwn fath o cymysgu i fyny ychydig o JavaScript a html. Maent mewn gwirionedd yn chwarae 'n bert' n glws gyda'i gilydd, ac yn y blaen yn ôl pob golwg pan Yr wyf yn clicio ar y botwm hwn, dw i'n mynd i alw ryw ddyddiad yn effro swyddogaeth. Ac yn yr un modd rhaid i mi diffiniedig ymddygiadau ar gyfer pob un o'r botymau eraill sy'n ar y dudalen home.html, y byddwn yn cadw dychwelyd i yn ystod y cwrs o'r fideo. Ond gadewch i ni fynd yn ôl i fyny yma ac edrych ar clock.js, sef y Ffeil JavaScript i mi Ysgrifennodd bod gan y swyddogaeth gyntaf rydym yn mynd i gymryd golwg ar. Fel y gwelwch, yr wyf yn dechrau fy JavaScript weithredu gyda'r swyddogaeth gair allweddol, ac rydw i wedi rhoi yr un yma yn enw, fe'i gelwir dyddiad effro. Y tu mewn o yno, yr wyf yn ôl pob golwg yn creu newidyn lleol newydd o'r enw dyddiad cyfredol. Ac yr wyf i'n mynd i aseinio yn hafal i'r dyddiad newydd. A gallem fynd i lawer o manylion ynghylch yr hyn mae hyd yn hyn, ac yn wir JavaScript mor fawr nad y gallwn cwmpasu popeth mewn un fideo. Ond digon yw dweud, mae hyn yn mynd i ddychwelyd i mi eitem ddata sy'n crisialu y dyddiad a'r amser ar hyn o bryd. Im 'yn storio hynny mewn newidyn fy mod yn yn ôl pob golwg yn mynd i roi gwybod hyd yn hyn ar hyn o bryd. Wel, beth mae effro Dyddiad yn edrych ar hyn o bryd yn hoffi? Gadewch i ni edrych ar y ffeil ei hun yn ôl drosodd yn y ffenestr porwr. Felly unwaith eto, mae hyn yn y botwm i mi wedi clymu i, mae hyn yn swyddogaeth a enwir. Ac yr wyf yn clicio yn y fan a'r edrychwch beth wnaeth hynny, mae'n rhybuddio. Mae'n popped i fyny y math hwn o flwch dweud mi fod yr amser presennol yw, mae'n debyg 'i' 4 Tachwedd am 10:43:43 yn y bore. Ac os wyf yn clicio arno eto, yn awr mae'n ychydig eiliadau yn ddiweddarach, dde? Felly dyna i gyd swyddogaeth hon yn ei wneud. Pan fyddaf yn clicio y botwm hwn, mae'n pops i fyny neges effro i mi. Felly nid oes mewn gwirionedd gormod i'w swyddogaethau mae hynny'n wahanol i PHP, dim ond ychydig o gystrawen newydd sy'n dod â gweithio gyda JavaScript. Araeau yn JavaScript yn eithaf syml. I ddatgan array, byddwch yn defnyddio gystrawen cromfachau sgwâr ein bod yn gyfarwydd â o PHP. Ac yn debyg i PHP, rydym yn Gall hefyd gymysgu mathau data. Felly amrywiaeth hwn, y ddau araeau hyn fyddai fod yn JavaScript hollol ddilys. Un dyna i gyd cyfanrifau, ac yn un sy'n cael ei gymysgu i fyny gwahanol fathau o ddata. Beth sy'n rhywbeth gwahanol iawn yn JavaScript, er bod? Dyna y syniad o gwrthrych. Felly, efallai eich bod wedi clywed am wrthwynebu rhaglennu oriented. Nid ydym yn gwneud llawer ohono yn CS50, ond byddwn yn gwneud ychydig bach ohono yma yng nghyd-destun JavaScript. Nawr JavaScript y gallu i yn ymddwyn fel rhaglennu gwrthrych oriented iaith, ond nid yw'n ei hun yn gyfan gwbl gwrthrych oriented iaith raglennu. Ac mae hyn eto yn dod yn ôl i pam y dywedais, mae'n Gall fod yn anodd iawn i ddysgu JavaScript fel eich rhaglennu cyntaf iaith, gan nad yw'n gwneud 'n sylweddol yn addas patrwm penodol. C ar y llaw arall yn iaith raglennu swyddogaethol. Os ydym am, swyddogaethau math o dyn bos mawr, dde? Maent yn pennu beth digwydd popeth arall. Rydym yn awyddus i newid newidynnau, rydym yn galw swyddogaethau. Rydym yn gwneud pethau i swyddogaethau. Gwrthrychau yn lle hynny, mewn wrthwynebu iaith oriented, gwrthrychau fath o ddod yn y seren a swyddogaethau yn dod yn fath o uwchradd. Ond beth yw gwrthrych, beth yn syniad hwn o wrthrych? Wel, os yw'n helpu, yn meddwl am y peth yn y fath gyntaf o fel strwythur C neu struct ein bod wedi dysgu am o'r blaen. Mewn C, strwythur yn cynnwys nifer o feysydd, ac efallai rydym yn awr efallai yn dechrau ffoniwch y meysydd hyn eiddo. Ond mae'r eiddo byth yn sefyll ar eu pen eu hunain, dde? Os byddaf yn diffinio strwythur ar gyfer car fel hyn gyda'r canlynol dau caeau neu eiddo, un yn cyfanrif ar gyfer y flwyddyn y car ac yn gymeriad arall 10 llinyn ar gyfer y model y car, Gallaf ddweud rhywbeth fel hyn, Gallaf ddatgan newidyn newydd o'r math Herbie car struct. Ac yna gallaf ddweud rhywbeth fel herbie.year hafal 1,963, a herbie.model hafal Chwilen. Mae hynny'n iawn. Im 'yn arfer y caeau yn y cyd-destun y strwythur, ond yr wyf byth gallai jyst dweud rhywbeth fel hyn. Iawn? Nid wyf yn gallu defnyddio'r enw maes annibynnol ar y strwythur. Mae'n fath o beth sylfaenol. Felly caeau cael sylfaenol i strwythurau C yn debyg iawn i eiddo yn sylfaenol i wrthrychau JavaScript. Ond beth sy'n eu gwneud arbennig o ddiddorol yw y gall gwrthrychau hefyd gael yr hyn yn cael eu galw'n ddulliau, sydd yn wirioneddol ond gair ffansi ar gyfer swyddogaethau sy'n yn gynhenid ​​i'r gwrthrych yn ogystal. Felly mae'n un o swyddogaethau y gall dim ond Gelwir yng nghyd-destun gwrthrych. Dim ond gwrthrych sydd wedi diffinio'n swyddogaeth hon tu mewn ei, os ydych yn meddwl am struct, y swyddogaeth Diffinnir y tu rhai sy'n diffinio bresys cyrliog y strwythur. Felly dim ond yn golygu rhywbeth i'r strwythur. A dyna fath o beth rydym yn ei wneud yma gyda gwrthrychau a dulliau. Mae'n bôn fel ein bod yn ddiffinio swyddogaeth sy'n yn unig yn gwneud synnwyr ar gwrthrych penodol, ac felly rydym yn yn galw bod dull y gwrthrych. A gallwn byth yn galw hynny swyddogaeth annibynnol ar y gwrthrych, yn union fel na allwn ddweud blwyddyn neu fodel annibynnol ar y struct yn C. Felly raglennu swyddogaethol patrymau edrych rhywbeth fel hyn. Swyddogaeth ac yna pan fyddwch yn trosglwyddo yn y gwrthrych fel paramedr. Mewn rhaglennu gwrthrych oriented ieithoedd, mae hyn yn fath o yn cael flipped, a byddem yn meddwl am mae'n hoffi hyn, object.function. Felly, mae'n fath o hynny dot gweithredwr eto awgrymu ei fod yn rhyw fath o eiddo neu briodoledd y gwrthrych ei hun. Ond mae hyn yn beth gwrthrych iaith raglennu oriented Efallai ei wneud i wneud swyddogaeth yn galw ar ddull, unwaith eto, a oedd yn yn unig yw gair arbennig ar gyfer swyddogaeth mae hynny'n gynhenid ​​i wrthrych. Dyma beth sy'n Efallai y gystrawen yn edrych fel. Ac felly byddwn yn dechrau gweld rhai o hyn yng nghyd-destun JavaScript. Gallwch hefyd feddwl am wrthrych fath o fel amrywiaeth cysylltiadol, yr ydym yn gyfarwydd â o PHP. Cofiwch amrywiaeth cysylltiadol yn caniatáu ni gael barau gwerth allweddol, yn lle hynny o gael mynegeion 0, un, dau, tri, ac yn y blaen fel rydym yn ei defnyddio i o C araeau. Gall araeau cysylltiadol map eiriau, megis yn y fideo PHP, oeddem yn sôn am topins o pizzas. Ac felly roedd gennym amrywiaeth Gelwir pizzas, ac yr ydym yn Roedd caws yn allweddol ac 8.99 $ oedd y gwerth, ac yna pepperoni yn allweddol, $ 9.99 Roedd yn werth, ac yn y blaen. Ac felly gallwn hefyd feddwl am gwrthwynebu fath o debyg i cysylltiadol arae. Ac felly cystrawen hyn yma Byddai creu gwrthrych newydd Gelwir Herbie gyda dau priodweddau tu mewn iddo. Flwyddyn, sy'n cael ei neilltuo gwerth 1963 a model, sy'n cael ei neilltuo i'r llinyn Chwilen. Ac yn sylwi yma nad Im 'yn arfer dyfynodau sengl yn JavaScript. Gallwch ddefnyddio dyfynodau sengl neu ddwbl pan ydych yn sôn amdano llinynnau. 'I' jyst yn gonfensiynol yn wir bod y rhan fwyaf o amseroedd pan fyddwch yn ysgrifennu JavaScript, 'ch jyst yn defnyddio dyfynodau sengl. Ond allwn i ddefnyddio dyfynodau dwbl yma, ac a fyddai'n cael ei berffaith iawn hefyd. Felly cofiwch sut yn PHP oedd gennym syniad hwn o ar gyfer pob dolen a fyddai'n caniatáu i ni i ailadrodd dros yr holl o werth allweddol parau o cysylltiadol array, oherwydd ein Nid oedd gan y gallu hwn i ailadrodd drwy 0, un, dau, tri, pedwar, ac yn y blaen? Mae JavaScript rhywbeth yn debyg iawn, ond nid yw'n cael ei alw'n ar gyfer pob dolen, fe'i gelwir yn ei gyfer yn dolenni. Felly, os wyf yn dweud i mi fel hyn, er allwedd var mewn gwrthrych, dyna fath o debyg i ddweud ar gyfer pob rhywbeth fel rhywbeth. Ond yr holl Rydw i'n ei wneud yma yn ailadrodd drwy bob un o'r allweddi fy gwrthrych. Ac tu mewn i'r cyrliog bresys yno, fyddwn i defnyddio gwrthrych cromfachau sgwâr allweddol i gyfeirio i werth yn y lleoliad hwnnw allweddol. Fel arall, mae ' hyd yn oed dull arall. Os Fi jyst yn unig yn gofalu am y gwerthoedd, gallaf ddweud yn allweddol o wrthrych, a dim ond yn defnyddio allwedd y tu mewn. Felly, er allwedd var mewn gwrthrych, yr wyf wedi i ddefnyddio cromfachau sgwâr gwrthrych allweddol y tu mewn i'r ddolen. Ar gyfer allwedd var o gwrthrych, gallaf dim ond yn defnyddio'r allwedd y tu mewn i'r ddolen, am fy mod i'n jyst yn benodol siarad am y gwerthoedd yno. Felly gadewch efallai i ni gymryd edrych ar y gwahaniaeth dim ond i ddangos i chi yn gyflym y gwahaniaeth rhwng pedwar i mewn ac am o gyda penodol iawn array, sydd gennym yma, array wythnos. Felly, rhaid i mi ddod o hyd i amrywiaeth newydd fy mod lenwi â saith llinynnau, Dydd Llun, Mawrth, Mercher, Dydd Iau, Dydd Gwener, Dydd Sadwrn, dydd Sul. Ac yr wyf am ailadrodd yn awr drwy amrywiaeth hwn, argraffu gwybodaeth benodol. Os byddaf yn defnyddio ei gyfer yn ddolen i argraffu gwybodaeth, beth ydych chi'n meddwl fy mod i'n mynd i gael? Wel, gadewch i ni edrych. Ac cyn i ni neidio dros i ffenestr fy porwr, jyst yn gwybod bod console.log yn fath o un ffordd o wneud yn F print yn JavaScript. Ond beth yw'r consol? Wel, dyna beth rydym yn mynd i fynd yn edrych ar hyn o bryd. Iawn, felly rydym yn ôl yma mewn ffenestr fy porwr, ac yr wyf i'n mynd i agor i fyny fy offer datblygwr. Unwaith eto, Im 'jyst yn taro F12 i agor offer datblygwr. Ac yn sylwi bod yma yn y top Rwyf wedi dewis consol. Felly, mae hyn yn syniad o consol datblygwr, a bydd yn ein galluogi i argraffu gwybodaeth allan, fath o fel y derfynell, ond fel y byddwch yn gweld ychydig yn ddiweddarach, gallwn hefyd deipio gwybodaeth mewn i ryngweithio â'n tudalen ar y we. Rydw i'n mynd i chwyddo i mewn ychydig yma, ac rwy'n gonna yn awr cliciwch ar ei gyfer yn y prawf. A phedwar yn test-- Dydw i ddim yn gonna yn dangos i chi y cod ar gyfer hynny nawr, ond byddwch yn ei gael os ydych yn llwytho i lawr y cod ffynhonnell sy'n yn gysylltiedig â video-- hwn yn unig yw hynny ar ei gyfer yn ddolen ein bod yn gweld dim ond eiliad yn ôl ar y sleid. Felly rwy'n cliciwch gonna fod botwm, a dros yma, dyma beth sydd wedi ei argraffu yn y consol, 0, un, dau, tri, pedwar, pump, chwech. Doeddwn i ddim yn argraffu'r wybodaeth y tu mewn lleoliadau arae hynny, oherwydd fy mod yn defnyddio ar ei gyfer yn ddolen. Ac y tu mewn i'r corff y ddolen, yr wyf yn dim ond argraffu allwedd ni wrthwynebu allweddol. Ond os wyf yn awr yn glir fy consol, ac yr wyf yn newid i am y prawf, a phedwar o brawf Yr wyf yn dweud fy mod defnyddio ar gyfer y dolen yn lle hynny ac argraffu allweddol, os wyf yn clicio hynny, nawr rwy'n cael y elfennau gwirioneddol tu mewn fy gwrthrych neu mae fy amrywiaeth yn yr achos hwn. Mae fy casgliad o ddyddiau yr wythnos. Rwy'n hargraffu Dydd Llun, Dydd Mawrth, dydd Mercher. Felly dyna yw'r gwahaniaeth rhwng a am yn ddolen, sy'n argraffu allan dim ond y allweddi os ydych yn unig yn defnyddio allwedd tu mewn i'r corff y ddolen, ac mae am o ddolen, a oedd yn brintiau nodi'r gwerthoedd os ydych yn defnyddio yn unig allweddol y tu mewn i'r corff y ddolen. Mae pob hawl, sut rydym yn awr yn dechrau concatenate llinynnau ac efallai cymysgu i fyny rhai newidynnau gyda rhyngosod fel ein bod yn gallu ei wneud yn PHP? Wel, rydym yn eithaf cyfarwydd gyda hyn o PHP. Dyma sut y byddem yn ei wneud gan ddefnyddio'r dot gweithredwr concatenate llinynnau. Yn JavaScript, fodd bynnag, rydym mewn gwirionedd yn defnyddio rhywbeth Gelwir y gweithredydd a mwy, a oedd yn yn efallai hyd yn oed ychydig bach mwy sythweledol, dde? Rydym yn ychwanegu bagad o llinynnau at ei gilydd. Felly gadewch i ni mynd yn ôl drosodd a gweld beth mae hyn Bydd argraffu os ydym yn ceisio ei argraffu yr holl wybodaeth mewn amrywiaeth wythnos. Mae pob hawl, felly o dan fan hyn dan concatenation llinyn, Mae gen i ddau ddewis, adeiladu llinyn V1 V2 ac yna adeiladu llinyn. A byddwn yn gweld pam ein bod Mae angen i V2 mewn eiliad. Ond dw i'n gonna cliciwch ar V1 adeiladu llinyn, a oedd yn yw'r cod roeddem dim ond yn edrych ar, y console.log gyda phob un o'r pwyntiau cadarnhaol. Gadewch i ni weld os yw hyn printiau yr hyn yr ydym yn ei ddisgwyl. Dydd Llun Rhif diwrnod 01 yr ​​wythnos yw, Dydd Mawrth Rhif diwrnod 11 yr wythnos yw. Wel, yr hyn oeddwn yn ceisio i'w wneud nad oedd yn cael iddo i'w argraffu Dydd Llun Rhif ddydd yn un, dydd Mawrth Rhif ddiwrnod yw. Ond mae'n ymddangos fel fy mod bob amser yn argraffu un. Wel, pam hynny? Wel, mae'n troi allan, yn cymryd golwg arall heb fawr snippet hon o god yma. Sylwch ein bod yn defnyddio'r plws gweithredwr mewn dau gyd-destun gwahanol. Ac felly dyma ble efallai pethau ein bod ni wedi bod yn ei ddweud math o, oh, mae mor wych. Nid ydym yn delio â mathau data anymore. Ond dyma lle y ffaith ein bod yn colli mathau data Gall mewn gwirionedd fod yn dipyn o broblem i ni. Nawr bod y gweithredwr a mwy yn cael ei ddefnyddio i concatenate llinynnau ac ychwanegu rhifau gyda'i gilydd, JavaScript wedi i wneud ei amcan gorau o ran yr hyn yr wyf am ei wneud i mi. Ac yn yr achos hwn, mae'n dyfalu anghywir. Mae'n diwrnod yn unig concatenated, a fyddai'n 0, un, dau, tri, pedwar, pump, neu chwech, ac yna 'i jyst concatenated hynny ac yna concatenated un. Nid oedd mewn gwirionedd hychwanegu at ei gilydd. Ac felly yr ieithoedd hyn, PHP a JavaScript, hynny crynodebau i ffwrdd syniad hwn o fathau, Nid oes rhaid i chi ddelio ag ef anymore. Maent yn dal i gael y mathau o dan y cwfl. Ac rydym yn gallu, mewn sefyllfaoedd fel hyn, trosoledd ffaith drwy ddweud rhywbeth fel efallai hwn, sydd yn dweud JavaScript, gan y ffordd, yn trin hyn fel cyfanrif, peidiwch ei drin fel llinyn, hyd yn oed er ein bod ni'n cymysgu gyda'i gilydd llinynnau a chyfanrifau yma. Dim ond un o'r pethau hynny ei bod yn ymddangos mor fawr yn y cyd-destun nad oes raid i ni ddelio â mathau anymore, ond weithiau wnewch chi helpu rhedeg i mewn i sefyllfa yn union fel hyn lle y ffaith bod nad oes gennych reolaeth dros fathau Gall backfire arnoch chi os nad ydych yn ofalus. Ac felly os ydym yn pop yn ôl dros i IDE, rwy'n mynd i glirio allan fy consol eto, ac yr wyf i'n mynd i glicio llinyn Fersiwn adeilad dau, a oedd yn lle yr wyf yn defnyddio swyddogaeth honno int dosrannu. Nawr mae'n argraffu Gwybodaeth fy mod i'n disgwyl. Dydd Llun un rhif dydd, dydd Mawrth Rhif ail ddiwrnod, ac yn y blaen yn. Felly, gadewch i ni siarad am swyddogaethau eto. Addewais y byddem yn siarad am dienw swyddogaethau, ac yn awr y cyd-destun ar gyfer hynny wedi cyrraedd o'r diwedd. Felly, cyn i ni wneud hynny, gadewch i ni siarad eto am araeau am ddim ond eiliad. Felly araeau yn arbennig achos o wrthrych. Yn wir, mae popeth yn JavaScript mewn gwirionedd gwrthrych. Felly swyddogaethau yn achos arbennig o wrthrych, gyfanrifau yn arbennig achos o wrthrych, ond araeau penodol gennym nifer o ddulliau. Cofiwch am eu bod gwrthrychau, gallant gael priodweddau a dulliau. Mae ganddynt nifer o ddulliau sy'n gellir eu cymhwyso i amcanion hynny. Mae 'na dull o'r enw maint, array.size, a fydd yn dychwelyd i chi fel y byddech yn ei ddisgwyl nifer yr elfennau yn eich casgliad. array.pop, fath o fel ein syniad o neidio i ffwrdd o pentwr, os ydych yn cofio oddi wrth ein fideo staciau, cael gwared ar yr elfen olaf o'r rhesi. array.push yn ychwanegu elfen newydd hyd at ddiwedd arae. array.shift yn fath o fel DQ, mae'n splices allan yr elfen gyntaf iawn o amrywiaeth. Ond mae hefyd yn arbennig arall dull o amrywiaeth o'r enw map. Ac mae hyn yn fath o gysyniad diddorol. Felly beth yw'r syniad o fap? Byddwch mewn gwirionedd yn gweld hyn mewn nifer o ieithoedd eraill, ac nid ydym yn sôn am math o cartograffwyr map yma, rydym yn sôn am swyddogaeth mapio. Yng nghyd-destun ein bod sôn amdano yma, map yn llawdriniaeth ydym arbennig Gellir perfformio ar amrywiaeth i wneud cais swyddogaeth benodol i bob elfen o'r rhesi. ac felly byddem yn dweud yn yr achos hwn, efallai array.map, ac tu mewn iddo, rydym yn pasio i mewn i map yn swyddogaeth yr ydym am i'w cymhwyso i bob elfen unigol. Felly mae'n fath o debyg i ddefnyddio dolen i ailadrodd dros bob elfen ac yn cymhwyso penodol gweithredu i bob elfen, dim ond JavaScript wedi hyn a adeiladwyd yn syniad o fapio y gellir eu cymhwyso. Ac mae hyn yn cyd-destun gwych i siarad am swyddogaeth dienw. Felly, gadewch i ni ddweud ein bod wedi amrywiaeth hwn o gyfanrifau. Mae'n cael ei alw Nums, ac 'i' got pump pethau ynddo, un, dau, tri, pedwar, pump. Nawr rwyf am i fapio rhai swyddogaeth ymlaen i amrywiaeth hwn. Yr wyf am gael swyddogaeth yn berthnasol i bob elfen o'r rhesi. Wel, gadewch i ni ddweud bod yr hyn yr wyf am i gwna ydy jyst dyblu pob un o'r elfennau. Beth allwn i ei wneud yw dim ond yn defnyddio dolen ar gyfer var wyf yn dychwelyd 0, yr wyf yn llai na neu'n hafal i 4, yr wyf yn ogystal, a mwy, a Yna dyblu pob rhif sengl. Ond gallaf hefyd yn gwneud rhywbeth fel hyn. Gallaf ddweud Nums oedd gynt un, dau, tri, pedwar, pump, yn awr, fodd bynnag, hoffwn i chi i cymhwyso mapio ar arae hon lle yr hoffwn i chi i ddyblu pob rhif. A dyna'n union yr hyn sy'n digwydd yma. Ond sylwi ar yr hyn dw i'n pasio mewn fel y ddadl i fapio. Mae hyn yn swyddogaeth ddienw. Ac yn sylwi nad wyf wedi rhoi swyddogaeth hon enw, Dim ond wedi rhoi ei restr paramedr. Ac felly mae hyn yn enghraifft o swyddogaeth ddienw. Rydym yn gyffredinol na fyddai byth yn galw hyn Swyddogaeth y tu allan i gyd-destun map. Rydym yn diffinio fel paramedr i fapio, ac felly nid ydym yn ei wneud mewn gwirionedd angen i chi gael enw ar ei gyfer os yw'r unig beth sy'n poeni am yn map ac mae'n diffinio'n gywir mae tu mewn map. Ac felly mae hyn yn swyddogaeth ddienw. Nid ydym wedi gallu i wneud hyn o'r blaen. Map rhywfaint o swyddogaeth sy'n yn derbyn un paramedr, num, a beth swyddogaeth honno yn ei wneud yn dychwelyd num amseroedd 2. Ac felly ar ôl hyn mapio wedi cael ei gymhwyso, mae hyn yn awr beth Nums edrych fel, dau, pedwar, chwech, wyth, 10. A byddwn yn alw yn fy ffenestr bori a dim ond yn edrych ar hyn yn gyflym iawn yn ogystal. Felly, mae gennyf botwm arall yma yn fy dudalen gartref a elwir yn dwbl. A pan fyddaf yn clicio ddwywaith, ac mae'n dweud mi cyn ei fod yn un, dau, tri, pedwar, pump ar ôl dau, pedwar, chwech, wyth, 10. Ac os wyf yn mynd yn ôl a chlicio dwbl eto, dau, pedwar, chwech, wyth, 10. Ac yna ar ôl, pedwar, wyth, 12, 16, ac yna 20. A beth ydw i'n ei wneud yn y swyddogaeth hon? Wel, os ydym yn unig pop drosodd i IDE, a Rwy'n dynnu i fyny fy swyddogaeth ddienw, dyma ar-lein saith trwy 13, rwy'n yn gwneud ychydig bach o waith ffansi yma, ond Im 'jyst yn argraffu beth sydd ar hyn o bryd yn y rhesi. Yna, ar linell 16, 17, a 18, mae fy map. Dyma lle rwy'n gwneud cais dyblu hwn swyddogaeth i bob elfen unigol. Ac yna ychydig ymhellach i lawr, Im 'jyst yn gwneud yr un peth Oeddwn yn ei wneud o'r blaen, ac eithrio nawr rwy'n argraffu'r cynnwys y rhesi wedyn. Ond yr holl Rwyf wedi gwneud yma yw dim ond yn defnyddio swyddogaeth ddienw i fapio ar draws amrywiaeth gyfan. Felly, un yn fwy bwnc mawr i siarad am yn JavaScript yw'r syniad o ddigwyddiad. Mae digwyddiad yn rhywbeth sydd ond yn digwydd pan fydd defnyddiwr yn rhyngweithio gyda'ch gwe dudalen, felly efallai eu bod clicio rhywbeth, neu efallai y dudalen yn cael ei orffen llwytho, neu efallai eu bod wedi symud eu llygoden dros rywbeth, neu maen nhw wedi teipio rhywbeth mewn maes mewnbwn. Mae pob un o'r pethau hyn yn ddigwyddiadau sy'n digwydd ar ein tudalen ar y we. Ac mae JavaScript wedi y gallu i gefnogi rhywbeth a elwir yn driniwr digwyddiad, a yn swyddogaeth alwad yn ôl y yn ymateb i ddigwyddiad html. A beth swyddogaeth alwad yn ôl? Wel, 'i' yn gyffredinol dim ond un arall enwi am swyddogaeth ddienw. Mae'n swyddogaeth sy'n yn ymateb i ddigwyddiad. A dyma lle rydym yn dod i'r syniad o rhwymo swyddogaethau penodol i priodoledd html penodol. Mae'r rhan fwyaf o elfennau html cael cymorth ar gyfer priodoledd nad oeddem yn siarad am yn y html 'n fideo ar gyfer rhywbeth fel ar clic neu ar hofran neu ar y llwyth, pob un o'r digwyddiadau hyn y gallwch wedyn ysgrifennu swyddogaethau sy'n delio â digwyddiadau hynny pan fydd y digwyddiadau hynny yn digwydd ar eich tudalen we. Ac felly efallai eich html yn edrych yn debyg i hyn. Ac yr wyf wedi dau fotwm yma, botwm un a dau fotwm, ac yma mae gen i ar hyn o bryd dim byd diffiniedig, ond dyma lle mae'r priodoledd ar cliciwch yn ôl pob golwg yn rhan o fy tag html. Felly, mae'n debyg pan fyddaf yn diffinio beth sydd mynd ymlaen tu mewn y priodoledd, mae'n mynd i fod yn rhyw JavaScript swyddogaeth sy'n ymateb i'r digwyddiad yn ôl pob tebyg o glicio ar botwm un neu ddau fotwm. Beth sydd fath o oer am hyn yw ein Gall ysgrifennu triniwr digwyddiad generig. Ac mae hyn Triniwr y digwyddiad bydd creu gwrthrych digwyddiad. A bydd y gwrthrych digwyddiad yn ei ddweud wrthym pa un o'r ddau fotwm ei glicio. Nawr, sut mae hynny'n gweithio? Wel, gallai edrych yn debyg i hyn. Felly, byddwn yn gyntaf ddiffinio ein botymau i gael ymateb i'r alwad yn ôl swyddogaeth a fydd yn cael eu galw pan fydd y botwm ei glicio, byddwn yn galw digwyddiad enw effro. Ac yn sylwi yn y ddau achos rydym yn pasio yn y paramedr digwyddiad. Felly rydym yn galw swyddogaeth hon neu pan fydd y swyddogaeth hon ei sbarduno gan y digwyddiad yn digwydd, mae'n mynd i greu'r gwrthrych y digwyddiad ac yn ei throsglwyddo fel paramedr i roi gwybod enw. A bod gwrthrych digwyddiad yn mynd i gynnwys gwybodaeth am ba botwm ei glicio. A sut mae'n gwneud hynny? Wel, gallai edrych yn debyg i hyn. Felly, yn awr yn fy wahân Ffeil JavaScript, wyf yn gallai rhaid i ddod o hyd hyn swyddogaeth enw effro, a oedd yn unwaith eto yn derbyn y paramedr digwyddiad. Ac yna dyma lle rydw i'n canfod pa botwm ei sbarduno, sbardun var digwyddiad yn dychwelyd Elfen ffynhonnell dot. Beth oedd ffynhonnell a greodd y gwrthrych y digwyddiad a gafodd ei phasio yn? A oedd yn un botwm neu a oedd yn botwm dau? Ac yna yma drwy'r rydw i'n ei wneud yw argraffu trigger.innerhtml. Wel, yn yr achos hwn, yn hyn cyd-destun, trigger.innerhtml yn unig yw hyn sydd wedi'i ysgrifennu ar y botwm. 'I jyst felly fydd yn digwydd os byddwn yn neidio yn ôl am eiliad, a fyddai fod yr hyn sydd yn rhwng y tagiau botwm hynny. Bydd yn botwm un neu ddau fotwm. A gadewch i ni edrych ar sut y byddai hyn yn driniwr digwyddiad edrych pe oedd gennym yn rhedeg yn ymarferol. Felly, yn gyntaf oll, eich bod wedi events.js agor, sef y ffeil JavaScript lle Rwyf wedi diffinio swyddogaeth hon. Ac fel y gwelwch, mae'n 'n bert lawer yn union beth rydym yn unig yn gweld ar y sleid eiliad yn ôl. A mi a mynd drosodd i'r dudalen gartref rydym wedi bod yn defnyddio. Ac yr wyf wedi yma botwm un a dau fotwm. A byddaf cliciwch ar un botwm. Rydych yn clicio ar y botwm un, os ydych yn yn gallu gweld yn iawn yma yn y rhybudd. IAWN. Cliciwch ar y botwm dau, yr ydych clicio ar fotwm dau. Felly y ddau botymau yn cael y un swyddogaeth galwadau, dde? Maent yn ddau yn enw effro digwyddiad, ond mae hyn gwrthrych y digwyddiad sy'n cael ei greu pan fyddwn yn clicio ar mae'n ei ddweud wrthym pa botwm ei glicio. Nid oedd rhaid i ni ysgrifennu dau ar wahân swyddogaethau neu yn delio â gael i drosglwyddo unrhyw wybodaeth ychwanegol. Rydym yn unig yn dibynnu ar beth fydd JavaScript yn ei wneud i ni, sef creu bod fath o wrthrych digwyddiad ar ein rhan. Mae llawer mwy i JavaScript na yr hyn yr ydym wedi ei gynnwys yn y fideo hwn, ond mae cael y rhain sylfaenol ddylai gael i chi dipyn o ffyrdd hir i popeth dysgu byddwch yn angen gwybod am hyn iaith diddorol. Rwy'n Doug Lloyd. Mae hyn yn CS50.