JavaScript 注釋語句操作
被注釋的代碼塊在JavaScript之中是不會(huì)被運(yùn)行的秋柄。注釋是一個(gè)非常好的方式可以讓你自己以及其他人明白這段代碼是怎么運(yùn)行的针贬。
JavaScript中的注釋方式有以下兩種:
使用?//?通知JavaScript來忽略當(dāng)前行的代碼
// This is an
in-line comment.
你也可以使用多行注釋來注釋你的代碼,以/*開始,通過*/來結(jié)束,參考如下代碼:
/* This is a
?multi-line comment */
最佳實(shí)踐在編寫代碼時(shí),應(yīng)該通過添加注釋來讓你的代碼看起來更加地清晰易懂购公。良好的注釋能夠清晰地傳達(dá)你寫的代碼的意圖,便于你或者他人在閱讀你的代碼時(shí)能更快的理解這段代碼的意圖雁歌。
任務(wù):嘗試創(chuàng)建這兩種類型的注釋宏浩。
聲明JavaScript變量
在計(jì)算機(jī)科學(xué)中,?data(數(shù)據(jù))大于一切,因?yàn)樗鼘τ谟?jì)算機(jī)的意義重大靠瞎。JavaScript提供七種不同的data types(數(shù)據(jù)類型)比庄,它們是undefined(未定義),?null(空),?boolean(布爾型),?string(字符串),?symbol(符號(hào)),?number(數(shù)字), and?object(對象)。
舉個(gè)例子, 計(jì)算機(jī)能夠分辨不同的數(shù)字, 例如數(shù)字?12乏盐,但是"12"和"dog", 或"123 cats", 卻是字母的集合佳窑。計(jì)算機(jī)能夠精確地運(yùn)算數(shù)字, 但是無法處理字符串中的數(shù)字父能。
Variables(變量)允許計(jì)算機(jī)以動(dòng)態(tài)的形式來存儲(chǔ)和操作數(shù)據(jù)神凑,通過操作指向數(shù)據(jù)的指針而不是數(shù)據(jù)本身來避免了內(nèi)存泄露,以上的七種數(shù)據(jù)類型都可以存儲(chǔ)到一個(gè)Variables(變量)中。
Variables(變量?)類似于您在數(shù)學(xué)中使用的x和y變量溉委,這意味著它們通過一個(gè)簡單的名稱來表示我們要引用的數(shù)據(jù)鹃唯。?計(jì)算機(jī)中的Variables(變?量)與數(shù)學(xué)變量不同,因?yàn)樗鼈兛梢栽诓煌瑫r(shí)間存儲(chǔ)不同的值瓣喊。
通過在變量的前面使用關(guān)鍵字var坡慌,我們告訴 JavaScript 來創(chuàng)建或者 declare(聲明)一個(gè)變量,就像這樣:
var ourName;
上面代碼的意思是創(chuàng)建一個(gè)名為ourName的variable(變量),在JavaScript中我們使用;(分號(hào))來結(jié)束一段聲明藻三。
Variable?(變量)的名字可以由數(shù)字洪橘、字母、$?或者?_組成棵帽,但是不能包含空格或者以數(shù)字為首熄求。
任務(wù):使用var?關(guān)鍵字來創(chuàng)建一個(gè)名為myName的變量。
提示如果遇到困難了逗概,請看下ourName的例子是怎么寫的抡四。
JavaScript 使用=為變量賦值
在JavaScript中,您可以使用=賦值運(yùn)算符將值存儲(chǔ)在變量中仗谆。
myVariable = 5;
把Number數(shù)字5賦給變量myVariable指巡。
賦值過程是從右向左進(jìn)行的。所有?=?賦值運(yùn)算符右邊的值都會(huì)被賦到左邊的變量中隶垮。
myVar = 5;???
myNum = myVar;
數(shù)值?5?被賦給變量?myVar?中藻雪, 然后變量?myVar?又賦給變量?myNum?,這樣子?myNum?變量中的值也是?5?了狸吞。
任務(wù):把數(shù)值?7?賦給變量?a勉耀。
把變量?a?中的內(nèi)容賦給變量?b。
JavaScript 使用=為變量賦初始值
通常地我們會(huì)在initialize初始化聲明變量的時(shí)候就會(huì)給變量賦一個(gè)初始值蹋偏。
var myVar = 0;
創(chuàng)建一個(gè)名為?myVar?的變量并指定初始值為?0便斥。
任務(wù):通過關(guān)鍵字?var?定義一個(gè)變量?a?并且指定初始值為?9。
理解JavaScript未定義變量
當(dāng) JavaScript 中的變量被聲明的時(shí)候威始,它們的初始值為?undefined枢纠。如果對一個(gè)值為?undefined?的變量進(jìn)行運(yùn)算操作的時(shí)候,那么結(jié)果將會(huì)是?NaN黎棠,NaN?的意思是?"Not a Number"晋渺。如果將一個(gè)沒有?定義?的變量跟字符串進(jìn)行連接的時(shí)候,你將獲得一個(gè)字符串"undefined"脓斩。
任務(wù):定義3個(gè)變量?a木西、b、c?随静,并且分別給它們賦值:5八千、10、"I am a"?,這樣它們就不會(huì)變成?undefined(未定義的了)恋捆。
理解JavaScript變量的大小寫敏感性
在 JavaScript 中所有的變量都是大小寫敏感的照皆。這意味著你要區(qū)分大寫字母和小寫字母。
MYVAR與MyVar和myvar?是截然不同的變量鸠信。這就有可能導(dǎo)致多個(gè)不同的變量卻有著有相似的名字。正是由于以上原因所以強(qiáng)烈地建議你, 不要使用這一特性论寨。(盡量避免設(shè)置名字相近難以區(qū)分的變量名)
最佳實(shí)踐
使用?駝峰命名法?來設(shè)置一個(gè) Javascript 變量星立,在?駝峰命名法?中,變量名的第一個(gè)單詞的首寫字母小寫葬凳,后面的單詞的第一個(gè)字母均為大寫绰垂。
舉個(gè)栗子:
var someVariable;
var anotherVariableName;
var thisVariableNameIsTooLong;
任務(wù):修正聲明的變量,使它們的命名符合?駝峰命名法?的規(guī)范火焰。
JavaScript加法運(yùn)算
Number?是JavaScript中的數(shù)據(jù)類型劲装,表示數(shù)字?jǐn)?shù)據(jù)。
現(xiàn)在讓我們嘗試在JavaScript中做加法運(yùn)算昌简。
JavaScript中使用?+?運(yùn)算符來讓兩個(gè)數(shù)字執(zhí)行加法運(yùn)算占业。
舉個(gè)栗子
myVar = 5 + 10; // 等于 15
任務(wù):改變數(shù)字?0?讓變量 sum 的值為?20.
JavaScript減法運(yùn)算
我們可以在 JavaScript 中執(zhí)行減法運(yùn)算。
JavaScript中使用?-?運(yùn)算符來做減法運(yùn)算纯赎。
舉例
myVar = 12 - 6; // 等于 6
任務(wù):改變數(shù)字?0?讓變量?difference?的值為?12谦疾。
JavaScript乘法運(yùn)算
我們可在 JavaScript 中使用乘法運(yùn)算。
JavaScript中可以使用?*?運(yùn)算符來讓兩個(gè)數(shù)字相乘犬金。
舉個(gè)栗子
myVar = 13 * 13; //
assigned 169
任務(wù):改變數(shù)值?0?來讓變量 product 的值等于?80念恍。
JavaScript除法運(yùn)算
我們可以在 JavaScript 中做除法運(yùn)算。
JavaScript中使用?/?運(yùn)算符做除法運(yùn)算晚顷。
舉個(gè)栗子
myVar = 16 / 2; //
assigned 8
任務(wù):改變數(shù)值0來讓變量?quotient?的值等于2峰伙。
JavaScript自增運(yùn)算++
使用?++?運(yùn)算符,我們可以輕易地對變量進(jìn)行自增或者+1運(yùn)算该默。
i++;
等效于
i = i + 1;
提示i++;這種寫法瞳氓,省去了使用=運(yùn)算符的必要。
任務(wù):重寫代碼栓袖,使用?++?來對變量?myVar?進(jìn)行自增操作顿膨。
JavaScript自減運(yùn)算--
使用自減運(yùn)算符符號(hào)?--?,你可以輕易地對一個(gè)變量執(zhí)行?自減?或者-1操作叽赊。
i--;
等效于
i = i - 1;
提示i--;這種寫法恋沃,省去了使用=運(yùn)算符的必要。
任務(wù):重寫代碼必指,使用?--?對?myVar?執(zhí)行自減操作囊咏。
JavaScript浮點(diǎn)數(shù)
我們可以把小數(shù)存儲(chǔ)到變量中。小數(shù)也被稱作?浮點(diǎn)數(shù)?。
提示不是所有的實(shí)數(shù)都可以用?浮點(diǎn)數(shù)?來表示梅割。因?yàn)榭赡艽嬖谒纳嵛迦氲腻e(cuò)誤霜第,詳情在這兒。
任務(wù):創(chuàng)建一個(gè)變量?myDecimal?并給它賦值一個(gè)浮點(diǎn)數(shù)户辞。 (e.g.?5.7)泌类。
JavaScript小數(shù)乘法運(yùn)算
在 JavaScript 中,你可以用小數(shù)進(jìn)行計(jì)算底燎,就像整數(shù)一樣刃榨。
讓我們把兩個(gè)小數(shù)相乘,并得到它們相乘的結(jié)果双仍。
任務(wù):改變?0.0?的數(shù)值讓變量product的值等于?5.0枢希。
JavaScript小數(shù)的除法運(yùn)算
現(xiàn)在讓我們來用一個(gè)小數(shù)做除法運(yùn)算。
任務(wù):改變數(shù)值?0.0?的值讓變量?quotient?的值等于?2.2.
JavaScript取余運(yùn)算%
使用%運(yùn)算符來對兩個(gè)數(shù)字進(jìn)行求余運(yùn)算朱沃。
舉個(gè)栗子
5 % 2 = 1
用法在數(shù)學(xué)中苞轿,看一個(gè)數(shù)是奇數(shù)還是偶數(shù),只需要看這個(gè)數(shù)除以2得到的余數(shù)是0還是1逗物。
17 % 2 = 1 (17 is 奇數(shù))???
48 % 2 = 0 (48 is
偶數(shù))
任務(wù):使用?%?操作符搬卒,計(jì)算11除以3剩下的余數(shù),并把余數(shù)賦給變量remainder翎卓。
JavaScript +=賦值操作
在編程當(dāng)中秀睛,通常通過賦值來修改變量的內(nèi)容。請記住莲祸,先計(jì)算=右邊蹂安,然后把計(jì)算出來的結(jié)果賦給左邊。
myVar = myVar + 5;
以上是最常見的運(yùn)算賦值語句锐帜,先運(yùn)算田盈、再賦值。
還有一類操作符是一步到位合并了運(yùn)算與賦值的操作缴阎。
這類運(yùn)算符的其中一種就是?+=?運(yùn)算符允瞧。
myVar += 5;?也是把數(shù)值?5?加到變量?myVar上。
任務(wù):使用?+=?操作符實(shí)現(xiàn)同樣的效果蛮拔。
JavaScript -=賦值操作
與?+=?操作符類似述暂,-=?操作符用來對一個(gè)變量進(jìn)行減法賦值操作。
myVar = myVar - 5;
將會(huì)從變量?myVar?中減去數(shù)值?5建炫。
也可以寫成這種形式:
myVar -= 5;
任務(wù):使用?-=?操作符實(shí)現(xiàn)同樣的效果畦韭。
JavaScript *=賦值操作
*=?運(yùn)算符是讓變量與一個(gè)數(shù)相乘并賦值。
myVar = myVar * 5;
將會(huì)把變量?myVar?與數(shù)值?5相乘并賦值肛跌。
也可以寫作這樣的形式:
myVar *= 5;
任務(wù):使用?*=運(yùn)算符實(shí)現(xiàn)同樣的效果艺配。
JavaScript /=賦值操作
/=?運(yùn)算符是讓變量與另一個(gè)數(shù)相除并賦值察郁。
myVar = myVar / 5;
會(huì)把變量?myVar?的值除于?5并賦值。
也可以寫作這樣的形式:
myVar /= 5;
任務(wù):使用?/=操作符實(shí)現(xiàn)同樣的效果转唉。
JavaScript 基本運(yùn)算綜合練習(xí)
為了測試你的學(xué)習(xí)效果皮钠,我們結(jié)合之前的知識(shí)點(diǎn)來做一個(gè)攝氏度轉(zhuǎn)華氏度的小程序。
從Celsius攝氏度轉(zhuǎn)換為Fahrenheit華氏度的算法是:攝氏度的溫度乘于9除于5赠法,再加上32麦轰。
創(chuàng)建一個(gè)變量?fahrenheit,然后計(jì)算出攝氏度對應(yīng)的華氏度砖织。
JavaScript 聲明字符串變量
先前我們使用過的代碼:
var myName = "your name";
"your name"?被稱作?字符串款侵。 字符串是用單引號(hào)或雙引號(hào)包裹起來的一連串的零個(gè)或多個(gè)字符。
任務(wù):創(chuàng)建兩個(gè)新的?字符串?變量:myFirstName?和?myLastName?分別為它們賦上你的姓和名的值镶苞。
JavaScript 轉(zhuǎn)義字符串中的引號(hào)
當(dāng)你定義一個(gè)字符串時(shí)喳坠,你必須以單引號(hào)或雙引號(hào)作為開頭和結(jié)尾鞠评。那么當(dāng)你需要在字符串中使用一個(gè):?"?或者?'?時(shí)該怎么辦呢?
在 JavaScript 中茂蚓,你可以通過在引號(hào)前面使用?反斜杠?(\) 來轉(zhuǎn)義引號(hào)。
var sampleStr = "Alan said, \"Peter is learning
JavaScript\".";
這標(biāo)志著提示 JavaScript 該單引號(hào)或雙引號(hào)并不是字符串的結(jié)尾剃幌,而是出現(xiàn)在字符串內(nèi)的字符聋涨。所以,如果你要打印字符串到控制臺(tái)负乡,你將得到:
Alan said, "Peter is learning JavaScript".
任務(wù):使用?反斜杠?將一個(gè)字符串以雙引號(hào)包裹并賦值給變量?myStr牍白,當(dāng)你將它打印到控制臺(tái)的時(shí)候,你會(huì)看到:
I am a "double quoted" string inside "double quotes"
JavaScript 使用單引號(hào)引用字符串
在 JavaScript 中的?字符串?要用單引號(hào)或雙引號(hào)來包裹它抖棘,只要你在開始和結(jié)束都使用相同類型的引號(hào)茂腥,單引號(hào)和雙引號(hào)的功能在JavaScript中是相同的。
"This string has \"double quotes\" in
it"
當(dāng)我們需要在字符串中使用與開頭結(jié)尾相同的引號(hào)時(shí)切省,我們需要對引號(hào)進(jìn)行?轉(zhuǎn)義?最岗。如果你有很多雙引號(hào)的字符串,使用轉(zhuǎn)義字符可能導(dǎo)致難以閱讀朝捆。這時(shí)候可以使用單引號(hào)般渡。
'This string has "double quotes" in it. And
"probably" lots of them.'
任務(wù):更改myStr字符串用于開始和結(jié)束的雙引號(hào)為單引號(hào),并移除轉(zhuǎn)義符號(hào)芙盘。
JavaScript 轉(zhuǎn)義字符串中的特殊符號(hào)
字符串中的轉(zhuǎn)義序列
引號(hào)不是字符串中唯一的可以被轉(zhuǎn)義字符驯用。下面是常見的轉(zhuǎn)義序列列表:
CodeOutput
\'單引號(hào)
\"雙引號(hào)
\\反斜杠符
\n換行符
\r回車符
\t制表符
\b退格符
\f換頁符
注意,如果你想要顯示一個(gè)反斜杠就必須要轉(zhuǎn)義它儒老。
任務(wù):按照下面的順序蝴乔,并且用空格來分割:反斜杠 制表符 回車符 換行符?并把它賦值給變量?myStr
注意:請使用雙引號(hào)包含內(nèi)容,并且注意內(nèi)容前后不要留有非必要的空格驮樊。
JavaScript字符串連接方式
在 JavaScript 中淘这,當(dāng)?+?運(yùn)算符與?字符串一起使用的時(shí)候剥扣,它被稱作?連接?運(yùn)算符。你可以通過和其他字符串連接?來創(chuàng)建一個(gè)新的字符串铝穷。
舉個(gè)栗子
'My name is Alan,' +
' I concatenate.'
注意注意空格钠怯。連接操作不會(huì)添加兩個(gè)字符串之外的空格,所以想加上空格的話曙聂,你需要自己在字符串里面添加晦炊。
任務(wù):使用?+?運(yùn)算符,把字符串?"This is the start.
"?和?"This
is the end."?連接起來并賦值給變量?myStr宁脊。
JavaScript +=連接字符串操作
我們還可以使用?+=?運(yùn)算符來將字符串?連接?到現(xiàn)有字符串變量的末尾断国。對于那些非常長的字符串來說,這是十分有用的榆苞。
注意注意空格稳衬。連接操作不會(huì)添加兩個(gè)字符串以外的空格,所以如果想要加上空格的話坐漏,你需要自己在字符串里面添加薄疚。
任務(wù):通過使用?+=?操作符來連接這兩個(gè)字符串:
"This is the first sentence. "?和?"This is the second
sentence."?并賦給變量?myStr。
JavaScript 使用變量連接字符串
有時(shí)候你需要?jiǎng)?chuàng)建一個(gè)填字風(fēng)格的字符串赊琳。
通過使用連接運(yùn)算符?+?街夭,你可以插入一個(gè)或多個(gè)變量來組成一個(gè)字符串。
任務(wù):把你的名字賦值給變量?myName?躏筏,然后把變量?myName?插入到字符串?"My name is "和?" and I am
swell!"之間板丽,并把連接后的結(jié)果賦值給變量?myStr。
JavaScript 追加變量到字符串上
我們不僅可以創(chuàng)建出多行的字符串趁尼,還可以使用加等號(hào)(+=)運(yùn)算符來追加變量到字符串上埃碱。
任務(wù):設(shè)置變量?someAdjective?的值,并使用?+=?運(yùn)算符把它追加到變量?myStr?上酥泞。
JavaScript 獲取字符串的長度
你可以通過在字符串變量或字符串后面寫上?.length?來獲得變量中string?(字符串)值的長度砚殿。
"Alan Peter".length; // 10
例如,我們創(chuàng)建了一個(gè)變量?var firstName =
"Charles"婶博,我們就可以通過使用?firstName.length?來獲得?"Charles"?字符串的長度瓮具。
任務(wù):使用?.length?屬性來獲得變量?lastName?的長度,并把它賦值給變量?lastNameLength凡人。
JavaScript 使用中括號(hào)獲取字符串中的第一個(gè)字符
括號(hào)符號(hào)是一種在字符串中的特定索引處獲取字符的方法名党。
() :小括號(hào)。
[] :中括號(hào)
{}:大括號(hào)
JavaScript中只有字符串類型挠轴,沒有字符類型传睹。
如果要獲取字符串中的某個(gè)字符,我們需要通過[索引]?來獲得對應(yīng)的字符岸晦。
大多數(shù)現(xiàn)代編程語言欧啤,如JavaScript睛藻,不同于人類從1開始計(jì)數(shù)。它們是從0開始計(jì)數(shù)邢隧,這被稱為?基于零?的索引店印。
例如, 在單詞 "Charles" 中索引0上的字符為 "C",所以在?var firstName =
"Charles"中倒慧,你可以使用?firstName[0]?來獲得第一個(gè)位置上的字符按摘。
任務(wù):使用[索引]來得到變量?lastName?中的第一個(gè)字符,并賦給變量?firstLetterOfLastName?纫谅。
提示如果你遇到困難了炫贤,可以參考一下變量?firstLetterOfFirstName?是如何賦值的。
理解JavaScript字符串的不可變性
在 JavaScript 中付秕,字符串?的值是?不可變的兰珍,這意味著一旦字符串被創(chuàng)建就不能被改變。
例如询吴,下面的代碼:
var myStr ="Bob";
myStr[0] = "J";
是不會(huì)把變量?myStr?的值改變成 "Job" 的掠河,因?yàn)樽兞?myStr?是不可變的。注意汰寓,這?并不?意味著?myStr?永遠(yuǎn)不能被改變口柳,只是字符串字面量?string literal?的各個(gè)字符不能被改變苹粟。改變?myStr?中的唯一方法是重新給它賦一個(gè)值有滑,就像這樣:
var myStr ="Bob";
myStr = "Job";
任務(wù):把myStr?的值改為Hello World。
JavaScript 使用中括號(hào)索引查找字符串中的第N個(gè)字符
你也可以使用?[索引]來獲得一個(gè)字符串中的某個(gè)位置的字符嵌削。
請記住毛好,計(jì)算機(jī)是從?0?開始計(jì)數(shù),所以獲取第一個(gè)字符的索引實(shí)際上是[0]苛秕。
任務(wù):讓我們使用[索引]肌访,把?lastName?變量的第三個(gè)字符賦值給?thirdLetterOfLastName。
提示如果你遇到困難了艇劫,可以參考一下?secondLetterOfFirstName?變量是如何做的吼驶。
JavaScript 使用中括號(hào)索引查找字符串中的最后一個(gè)字符
為了得到一個(gè)字符串的最后一個(gè)字符,你可以獲取該字符串的長度并減一來作為最后一個(gè)字符的索引店煞。
例如蟹演,在?var firstName =
"Charles"中,你可以這樣操作?firstName[firstName.length - 1]?來得到字符串的最后的一個(gè)字符顷蟀。
任務(wù):使用?[索引]?來取得?lastName?變量中的最后一個(gè)字符酒请。
提示如果你遇到困難了,可以參考一下lastLetterOfFirstName?變量上是怎么做的鸣个。
JavaScript 使用中括號(hào)索引查找字符串中倒數(shù)第N個(gè)字符
我們既然可以獲取字符串的最后一個(gè)字符脸甘,也可以用相同的方法獲取字符串的倒數(shù)第N個(gè)字符磺箕。
例如昏滴,你可以這樣?firstName[firstName.length
- 3]?操作來獲得?var firstName = "Charles"?字符串中的倒數(shù)第三個(gè)字符。
任務(wù):使用?[索引]?來獲得?lastName?字符串中的倒數(shù)第二個(gè)字符是趴。
提示如果你遇到困難了,可以參考一下thirdToLastLetterOfFirstName?變量是如何做到的澄惊。
Javascript 字符串操作綜合訓(xùn)練
填詞造句
現(xiàn)在我們將結(jié)合之前學(xué)習(xí)的字符串相關(guān)知識(shí)右遭,來玩一個(gè)填字風(fēng)格的文字游戲。
通過使用提供的變量:名詞myNoun缤削、形容詞myAdjective窘哈、動(dòng)詞myVerb、副詞myAdverb亭敢,來創(chuàng)建一個(gè)新的字符串并賦值到?result滚婉。
此外,除了所提供的詞之外帅刀,你還需要添加額外的連接字符串让腹。
例如:result = myNum+' aa '+myNun;使用+連接字符串,并且中間用額外字符" aa "來隔開扣溺,注意間隔字母兩邊要用空格骇窍,你也可以使用,來分割
我們提供了多種審核锥余,該審核用多個(gè)不同單詞的輸入來運(yùn)行你的函數(shù)腹纳,以確保所有提供的單詞和你額外添加的連接字符串能夠準(zhǔn)確輸出。
Javascript 數(shù)組操作
通過?數(shù)組驱犹,我們可以將多個(gè)數(shù)據(jù)存儲(chǔ)于同一個(gè)變量中嘲恍。
通過左括號(hào)[開始定義一個(gè)數(shù)組,以右括號(hào)]結(jié)束定義雄驹,并把每個(gè)數(shù)據(jù)條目之間用逗號(hào)隔開佃牛,就像這樣:var sandwich = ["peanut butter",
"jelly", "bread"]。
任務(wù):創(chuàng)建一個(gè)包含?字符串?和?數(shù)字?的數(shù)組?myArray医舆。
提示如果你遇到困難俘侠,請參考文本編輯器中的示例代碼。
Javascript 多維數(shù)組操作
你也可以在數(shù)組中包含其他數(shù)組蔬将,就像這樣:?[["Bulls",
23], ["White Sox", 45]]爷速。這被稱為一個(gè)?多維數(shù)組。
任務(wù):創(chuàng)建一個(gè)名為?myArray的多維數(shù)組娃胆。
JavaScript 使用索引查找數(shù)組中的數(shù)據(jù)
我們可以像操作字符串一樣通過數(shù)組索引[index]來訪問數(shù)組中的數(shù)據(jù)遍希。
數(shù)組索引的使用與字符串索引一樣,不同的是里烦,通過字符串的索引得到的是一個(gè)字符凿蒜,通過數(shù)組索引得到的是一個(gè)數(shù)據(jù)條目禁谦。與字符串類似,數(shù)組也是?基于零?的索引废封,因此數(shù)組的第一個(gè)元素的索引是?0州泊。
例如
var array = [1,2,3];
array[0]; //
等于1
var data = array[1];//
等于 2
任務(wù):創(chuàng)建一個(gè)名為?myData?的變量,并把?myArray?的第一個(gè)索引上的值賦給它漂洋。
JavaScript 使用索引修改數(shù)組中的數(shù)據(jù)
與字符串的數(shù)據(jù)不可變不同遥皂,數(shù)組的數(shù)據(jù)是可變的,并且可以自由地改變刽漂。
例如
var ourArray =[3,2,1];
ourArray[0] = 1; // ourArray
等于 [1,2,1]
任務(wù):修改數(shù)組?myArray?中索引0上的值為?3演训。
JavaScript 使用索引操作多維數(shù)組
可以把?多維?數(shù)組理解成是一個(gè)?數(shù)組中的數(shù)組。當(dāng)使用[]去訪問數(shù)組的時(shí)候贝咙,第一個(gè)[index]訪問的是該數(shù)組中的第N個(gè)子數(shù)組样悟,第二個(gè)[index]訪問的是第N個(gè)子數(shù)組的第N個(gè)元素。
例如
var arr = [
[1,2,3],
[4,5,6],
[7,8,9],
[[10,11,12], 13, 14]
];
arr[0]; //等于[1,2,3]
arr[1][2]; //等于6
arr[3][0][1]; //等于 11
任務(wù):對數(shù)組?myArray?使用[index]操作使得 myData 的值為?8
JavaScript push()函數(shù)追加數(shù)組數(shù)據(jù)
將數(shù)據(jù)追加到一個(gè)數(shù)組末尾的最簡單的方法是通過?push()?函數(shù)庭猩。
.push()?允許有一個(gè)或多個(gè)參數(shù)窟她,并把它“push”到數(shù)組的末尾。
var arr = [1,2,3];
arr.push(4);
// 現(xiàn)在arr的值為[1,2,3,4]
任務(wù):把?["dog", 3]?“push”到?myArray?變量的末尾蔼水。
JavaScript pop()函數(shù)彈出數(shù)組最后數(shù)據(jù)
改變數(shù)組中數(shù)據(jù)的另一種方法是用?.pop()函數(shù)震糖。
.pop()?函數(shù)用來“拋出”一個(gè)數(shù)組末尾的值。我們可以把這個(gè)“拋出”的值賦給一個(gè)變量存儲(chǔ)起來趴腋。
數(shù)組中任何類型的數(shù)據(jù)條目(數(shù)值吊说,字符串,甚至是數(shù)組)可以被“拋出來” 于样。
舉個(gè)例子, 對于這段代碼
var oneDown = [1, 4, 6].pop();
現(xiàn)在?oneDown?的值為?6?疏叨,數(shù)組變成了?[1, 4]潘靖。
任務(wù):使用?.pop()?函數(shù)移除?myArray?中的最后一條穿剖,并且把“拋出”的值賦給?removedFromMyArray。
JavaScript shift()函數(shù)移出數(shù)組第一個(gè)數(shù)據(jù)
pop()?函數(shù)用來移出數(shù)組中最后一個(gè)元素卦溢。如果想要移出第一個(gè)元素要怎么辦呢糊余?
.shift()?就是專門用來處理這類型需求的。它的工作原理類似?.pop()单寂,但它移除的是第一個(gè)元素贬芥,而不是最后一個(gè)。
任務(wù):使用?.shift()?函數(shù)移出?myArray?中的第一項(xiàng)宣决,并把“移出”的值賦給?removedFromMyArray蘸劈。
JavaScript unshift()函數(shù)移入數(shù)據(jù)到數(shù)組第一位
你不僅可以?shift(移出)數(shù)組中的第一個(gè)元素,你也可以?unshift(移入)一個(gè)元素到數(shù)組的頭部尊沸。
.unshift()?函數(shù)用起來就像?.push()?函數(shù)一樣, 但不是在數(shù)組的末尾添加元素威沫,而是在數(shù)組的頭部添加元素贤惯。
任務(wù):使用?unshift()?函數(shù)把["Paul",35]?加入到?myArray?的頭部。
JavaScript 創(chuàng)建購物清單實(shí)戰(zhàn)案例
創(chuàng)建一個(gè)名叫?myList的購物清單棒掠,清單的數(shù)據(jù)格式必須是多維數(shù)組孵构。
每個(gè)子數(shù)組中的第一個(gè)元素應(yīng)該是購買的物品名稱,第二個(gè)元素應(yīng)該是物品的數(shù)量烟很,類似于:
["Chocolate Bar", 15]
任務(wù):你的購物清單至少應(yīng)該有5個(gè)子數(shù)組颈墅。
JavaScript 函數(shù)定義
在 JavaScript 中,我們可以把代碼的重復(fù)部分抽取出來雾袱,放到一個(gè)函數(shù)(functions)中恤筛。
這是一個(gè)函數(shù)(function)的例子:
functionfunctionName() {
console.log("Hello World");
}
你可以通過函數(shù)名稱functionName加上后面的小括號(hào)來調(diào)用這個(gè)函數(shù)(function),就像這樣:
functionName();
每次調(diào)用函數(shù)時(shí)它會(huì)打印出消息的“Hello World”到開發(fā)的控制臺(tái)上芹橡。所有的大括號(hào)之間的代碼將在每次函數(shù)調(diào)用時(shí)執(zhí)行叹俏。
任務(wù):1.? 創(chuàng)建一個(gè)名為?myFunction?的函數(shù),這個(gè)函數(shù)可以打印“Hi World”到開發(fā)控制臺(tái)上僻族。
2.? 調(diào)用這個(gè)函數(shù)粘驰。
JavaScript 帶參數(shù)函數(shù)定義
函數(shù)的參數(shù)parameters在函數(shù)中充當(dāng)占位符(也叫形參)的作用,參數(shù)可以為一個(gè)或多個(gè)述么。調(diào)用一個(gè)函數(shù)時(shí)所傳入的參數(shù)為實(shí)參蝌数,實(shí)參決定著形參真正的值。
這是帶有兩個(gè)參數(shù)的函數(shù)度秘,?param1?和?param2:
functiontestFun(param1, param2) {
console.log(param1, param2);
}
接著我們調(diào)用?testFun:
testFun("Hello", "World");
我們傳遞了兩個(gè)參數(shù)顶伞,?"Hello"?和?"World"。在函數(shù)內(nèi)部剑梳,param1?等于“Hello”唆貌,param2?等于“World”。請注意垢乙,testFun?函數(shù)可以多次調(diào)用锨咙,每次調(diào)用時(shí)傳遞的參數(shù)會(huì)決定形參的實(shí)際值。
任務(wù):1. 創(chuàng)建一個(gè)名為?myFunction?的函數(shù)追逮,它可以接收兩個(gè)參數(shù)酪刀,計(jì)算參數(shù)的和,將結(jié)果輸出到控制臺(tái)钮孵。
2. 調(diào)用這個(gè)函數(shù)骂倘。
JavaScript 函數(shù)全局變量定義
在 JavaScript 中,?作用域?影響著變量的作用范圍巴席。在函數(shù)外定義的變量具有?全局?作用域历涝。這意味著,具有全局作用域的變量可以在代碼的任何地方被調(diào)用。
沒有使用var關(guān)鍵字定義的變量荧库,會(huì)被自動(dòng)創(chuàng)建在全局作用域中诱担,變成全局變量。當(dāng)在代碼其他地方無意間定義了一個(gè)變量电爹,剛好變量名與全局變量相同蔫仙,這時(shí)候會(huì)產(chǎn)生意想不到的后果,可能導(dǎo)致你的代碼出現(xiàn)BUG丐箩。因此你應(yīng)該總是使用var關(guān)鍵字來聲明你的變量摇邦。
任務(wù):在函數(shù)外聲明一個(gè)?全局?變量?myGlobal,并給它一個(gè)初始值?10
在函數(shù)?fun1?的內(nèi)部屎勘,不使用?var?關(guān)鍵字來聲明?oopsGlobal施籍,并賦值為?5。
JavaScript 函數(shù)局部變量定義
在一個(gè)函數(shù)內(nèi)聲明的變量概漱,以及該函數(shù)的參數(shù)都是局部變量丑慎,意味著它們只在該函數(shù)內(nèi)可見。
這是在函數(shù)?myTest內(nèi)聲明局部變量loc的最佳例子:
function myTest() {
var loc = "foo";
console.log(loc);
}
myTest(); // "foo"
console.log(loc); // "undefined"
在函數(shù)外瓤摧,loc?是未定義的竿裂。
任務(wù):在函數(shù)?myFunction?內(nèi)部聲明一個(gè)局部變量?myVar,并刪除外部console.log照弥。
JavaScript 函數(shù)全局變量與局部變量差異
一個(gè)程序中有可能具有相同名稱的
局部 變量 和 全局 變量腻异。在這種情況下,局部?變量將會(huì)優(yōu)先于?全局?變量这揣。
下面為例:
var someVar ="Hat";
function myFun() {
var someVar = "Head";
return someVar;
}
函數(shù)?myFun?將會(huì)返回?"Head"悔常,因?yàn)?局部變量?優(yōu)先級更高。
任務(wù):給?myFunction?添加一個(gè)局部變量來覆蓋?outerWear?并賦值為?"sweater"给赞。
JavaScript 函數(shù)使用return返回值
我們可以把數(shù)據(jù)通過函數(shù)的?參數(shù)?來傳入函數(shù)机打,也可以使用?return?語句把數(shù)據(jù)從一個(gè)函數(shù)中傳出來。
舉個(gè)栗子
functionplusThree(num) {
return num + 3;
}
var answer = plusThree(5); // 8
plusThree?帶有一個(gè)為?num?的?參數(shù)?并且返回(returns)一個(gè)等于?num + 3?的值片迅。
任務(wù):創(chuàng)建一個(gè)函數(shù)?timesFive?接受一個(gè)參數(shù), 把它乘于?5?之后并返回(returns)残邀。
JavaScript 函數(shù)使用返回值進(jìn)行賦值
復(fù)習(xí)一下,賦值之前障涯,先完成等號(hào)右邊的操作罐旗。這意味著我們可把一個(gè)函數(shù)的返回值,賦值給一個(gè)變量唯蝶。
假設(shè)我們預(yù)先定義的函數(shù)?sum?其功能就是將兩個(gè)數(shù)字相加,那么:
ourSum = sum(5, 12);
將調(diào)用?sum?函數(shù)遗嗽,返回return了一個(gè)數(shù)值?17粘我,然后把它賦值給了?ourSum?變量。
任務(wù):調(diào)用?process?函數(shù)并傳入?yún)?shù)值?7,然后把返回的值賦值給變量?processed征字。
JavaScript 隊(duì)列
在計(jì)算機(jī)科學(xué)中?隊(duì)列(queue)是一個(gè)抽象的數(shù)據(jù)結(jié)構(gòu)都弹,隊(duì)列中的數(shù)據(jù)條目都是有秩序的。新的條目會(huì)被加到?隊(duì)列?的末尾匙姜,舊的條目會(huì)從?隊(duì)列?的頭部被移出畅厢。
寫一個(gè)函數(shù)?queue?,用一個(gè)數(shù)組arr和一個(gè)數(shù)字item作為參數(shù)氮昧。數(shù)字item添加到數(shù)組的結(jié)尾框杜,然后移出數(shù)組的第一個(gè)元素,最后隊(duì)列函數(shù)應(yīng)該返回被刪除的元素袖肥。
JavaScript 布爾boolean數(shù)據(jù)類型
布爾(Boolean)是另一種數(shù)據(jù)類型
咪辱。布爾?值要么是true?要么是false。它非常像電路開關(guān)椎组,?true?是“開”油狂,false?是“關(guān)”。這兩種狀態(tài)是互斥的寸癌。
注意Boolean?值絕不會(huì)寫作被引號(hào)包裹起來的形式专筷。字符串?的?"true"?和?"false"?不是?布爾值,在 JavaScript 中也沒有特殊含義蒸苇。(布爾值不是字符串)
任務(wù):修改?welcomeToBooleans?函數(shù)仁堪,讓它返回?true?而不是?false。
JavaScript 等于比較運(yùn)算符==
在 JavaScript 中填渠,有很多 相互比較的操作弦聂。所有這些操作符都返回一個(gè)?true?或?false?值。
最基本的運(yùn)算符是相等運(yùn)算符:==氛什。相等運(yùn)算符比較兩個(gè)值莺葫,如果它們是同等,返回?true枪眉,如果它們不等捺檬,返回?false。必須注意相等運(yùn)算符不同于賦值運(yùn)算符(=)贸铜,賦值運(yùn)算符是把等號(hào)右邊的值賦給左邊的變量堡纬。
functionequalityTest(myVal) {
if (myVal == 10) {
?return "Equal";
}
?return "Not Equal";
}
如果?myVal?等于?10,相等運(yùn)算符會(huì)返回?true蒿秦,因此大括號(hào)里面的代碼會(huì)被執(zhí)行烤镐,函數(shù)將返回?"Equal"。否則棍鳖,函數(shù)返回?"Not Equal"炮叶。
在 JavaScript 中碗旅,為了讓兩個(gè)不同的?數(shù)據(jù)類型(例如?數(shù)字?和?字符串)的值可以作比較,它必須把一種類型轉(zhuǎn)換為另一種類型镜悉。然而一旦這樣做祟辟,它可以像下面這樣來比較:
?1 ==1// true
?1 ==2// false
?1 == '1' // true
"3"==3// true
任務(wù):把?相等運(yùn)算符?添加到指定的行,這樣當(dāng)?val?的值為12的時(shí)候侣肄,函數(shù)會(huì)返回"Equal"旧困。
JavaScript 全等于比較運(yùn)算符===
全等(===)是相對于相等操作符(==)的一種操作符。與相等操作符不同的是全等比較嚴(yán)格稼锅,它會(huì)同時(shí)比較元素的值和?數(shù)據(jù)類型吼具。
舉個(gè)例子
3 === 3 // true
3 === '3' // false
3?是一個(gè)?數(shù)字?類型的,而'3'?是一個(gè)?字符?類型的缰贝,所以3不全等于'3'馍悟。
任務(wù):在?if?語句值使用全等運(yùn)算符,這樣當(dāng)?val?嚴(yán)格等于7的時(shí)候剩晴,函數(shù)會(huì)返回"Equal"锣咒。
JavaScript 不等于比較運(yùn)算符!=
不相等運(yùn)算符(!=)與相等運(yùn)算符是相反的。在不相等運(yùn)算符中赞弥,如果條件結(jié)果在相等運(yùn)算符中為“false”則會(huì)被判斷為返回?true毅整。與相等運(yùn)算符類似,不相等運(yùn)算符在比較的時(shí)候也會(huì)轉(zhuǎn)換值的數(shù)據(jù)類型绽左。
例如
1 != 2// true???
1 != "1"http:// false???
1 != '1'// false???
1 != true // false???
0 != false// false
任務(wù):在?if?語句中悼嫉,添加不相等運(yùn)算符?!=,這樣函數(shù)在當(dāng)?val?不等于99?的時(shí)候拼窥,會(huì)返回 "Not Equal"戏蔑。
JavaScript 不全等于比較運(yùn)算符!==
不全等運(yùn)算符(!==)與全等運(yùn)算符是相反的。這意味著“不全等”并返回?false?的地方鲁纠,用全等運(yùn)算會(huì)返回?true总棵,反之亦然。全等運(yùn)算符不會(huì)轉(zhuǎn)換值的數(shù)據(jù)類型改含。
例如
3 !== 3 // false
3 !== '3' // true
4 !== 3 // true
任務(wù):在?if?語句中情龄,添加?不全等運(yùn)算符,這樣如果?val?不全等于?17?的時(shí)候捍壤,函數(shù)會(huì)返回 "Not Equal"骤视。
JavaScript 大于比較運(yùn)算符>
使用大于運(yùn)算符(>)來比較兩個(gè)數(shù)字。如果大于運(yùn)算符左邊的數(shù)字大于右邊的數(shù)字鹃觉,將會(huì)返回?true专酗。否則,它返回?false帜慢。
與相等運(yùn)算符一樣笼裳,大于運(yùn)算符在比較的時(shí)候唯卖,會(huì)轉(zhuǎn)換值的數(shù)據(jù)類型粱玲。
舉個(gè)栗子
?5 > 3 // true
?7 > '3' // true
?2 > 3 // false
'1' > 9// false
任務(wù):添加?大于?運(yùn)算符到指定的行躬柬,使得返回的語句是有意義的。
JavaScript 大于等于比較運(yùn)算符>=
使用?大于等于?運(yùn)算符(>=)來比較兩個(gè)數(shù)字的大小抽减。如果大于等于運(yùn)算符左邊的數(shù)字比右邊的數(shù)字大或者相等允青,它會(huì)返回?true。否則卵沉,它會(huì)返回?false颠锉。
與相等運(yùn)算符相似,大于等于?運(yùn)算符在比較的時(shí)候會(huì)轉(zhuǎn)換值的數(shù)據(jù)類型史汗。
舉個(gè)栗子
?6>=6// true
?7>= '3' // true
?2>=3// false
'7' >=9// false
任務(wù):添加?大于等于?運(yùn)算符到指定行琼掠,使得函數(shù)的返回語句有意義。
JavaScript 小于比較運(yùn)算符<
使用?小于?運(yùn)算符(<)比較兩個(gè)數(shù)字的大小停撞。如果小于運(yùn)算符左邊的數(shù)字比右邊的數(shù)字小瓷蛙,它會(huì)返回?true。否則戈毒,他會(huì)返回?false艰猬。與相等運(yùn)算符類似,小于?運(yùn)算符在做比較的時(shí)候會(huì)轉(zhuǎn)換值的數(shù)據(jù)類型埋市。
舉個(gè)栗子
2 < 5// true
'3' < 7// true
5 < 5// false
3 < 2// false
'8' < 4// false
任務(wù):添加?小于?運(yùn)算符到指定行冠桃,使得函數(shù)的返回語句有意義。
JavaScript 小于等于比較運(yùn)算符<=
使用?小于等于?運(yùn)算符(<=)比較兩個(gè)數(shù)字的大小道宅。如果在小于等于運(yùn)算符食听,左邊的數(shù)字小于或者等于右邊的數(shù)字,它會(huì)返回?true污茵。如果在小于等于運(yùn)算符樱报,左邊的數(shù)字大于或者等于右邊的數(shù)字,它會(huì)返回?false省咨。與相等運(yùn)算符類型肃弟,小于等于運(yùn)算符會(huì)轉(zhuǎn)換數(shù)據(jù)類型。
舉個(gè)栗子
4 <= 5// true
'7' <= 7// true
5 <= 5// true
3 <= 2// false
'8' <= 4// false
任務(wù):添加?小于等于?運(yùn)算符到指定行零蓉,使得函數(shù)的返回語句有意義笤受。
JavaScript 使用邏輯與運(yùn)算符&&比較數(shù)值
有時(shí)你需要在一次判斷中做多個(gè)操作。運(yùn)算符的左邊和右邊結(jié)果必須都是?true敌蜂,邏輯與運(yùn)算符(&&)才會(huì)返回?true箩兽。
同樣的效果可以通過if語句的嵌套來實(shí)現(xiàn):
if (num > 5) {
if (num < 10) {
return "Yes";
}
}
return "No";
只有當(dāng)?num?的值在6和9之間(包括6和9)才會(huì)返回 "Yes"。相同的邏輯可被寫為:
if (num > 5&& num < 10) {
return "Yes";
}
return "No";
任務(wù):結(jié)合兩個(gè)if語句為一個(gè)語句章喉,如果?val?小于或等于?50?并且大于或等于?25汗贫,返回?"Yes"身坐。否則,將返回?"No"落包。
JavaScript 使用邏輯或運(yùn)算符||比較數(shù)值
邏輯或運(yùn)算符左右兩邊任何一個(gè)操作數(shù)是true部蛇,邏輯或?運(yùn)算符 (||)返回?true。反之咐蝇,返回?false涯鲁。
舉個(gè)栗子
if (num > 10) {
return "No";
}
if (num < 5) {
return "No";
}
return "Yes";
只有當(dāng)num大于等于5或小于等于10時(shí),函數(shù)返回"Yes"有序。相同的邏輯可以簡寫成:
if (num > 10 ||num < 5) {
return "No";
}
return "Yes";
任務(wù):結(jié)合兩個(gè)if語句為一個(gè)語句抹腿,如果val不在10和20之間(包括10和20),返回?"Outside"旭寿。反之警绩,返回?"Inside"。
下題見第二部分~~