JavaScript闖關(guān)題(第一部分)

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"。

下題見第二部分~~

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末盅称,一起剝皮案震驚了整個(gè)濱河市肩祥,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌微渠,老刑警劉巖搭幻,帶你破解...
    沈念sama閱讀 221,695評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異逞盆,居然都是意外死亡檀蹋,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,569評論 3 399
  • 文/潘曉璐 我一進(jìn)店門云芦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來俯逾,“玉大人,你說我怎么就攤上這事舅逸∽离龋” “怎么了?”我有些...
    開封第一講書人閱讀 168,130評論 0 360
  • 文/不壞的土叔 我叫張陵琉历,是天一觀的道長坠七。 經(jīng)常有香客問我,道長旗笔,這世上最難降的妖魔是什么彪置? 我笑而不...
    開封第一講書人閱讀 59,648評論 1 297
  • 正文 為了忘掉前任,我火速辦了婚禮蝇恶,結(jié)果婚禮上拳魁,老公的妹妹穿的比我還像新娘。我一直安慰自己撮弧,他們只是感情好潘懊,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,655評論 6 397
  • 文/花漫 我一把揭開白布姚糊。 她就那樣靜靜地躺著,像睡著了一般授舟。 火紅的嫁衣襯著肌膚如雪酬诀。 梳的紋絲不亂的頭發(fā)上青自,一...
    開封第一講書人閱讀 52,268評論 1 309
  • 那天山林,我揣著相機(jī)與錄音左电,去河邊找鬼倡蝙。 笑死揩慕,一個(gè)胖子當(dāng)著我的面吹牛奏候,可吹牛的內(nèi)容都是我干的劲件。 我是一名探鬼主播揉燃,決...
    沈念sama閱讀 40,835評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼扫尺,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了炊汤?” 一聲冷哼從身側(cè)響起正驻,我...
    開封第一講書人閱讀 39,740評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎抢腐,沒想到半個(gè)月后姑曙,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,286評論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡迈倍,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,375評論 3 340
  • 正文 我和宋清朗相戀三年伤靠,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片啼染。...
    茶點(diǎn)故事閱讀 40,505評論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡宴合,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出迹鹅,到底是詐尸還是另有隱情卦洽,我是刑警寧澤,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布斜棚,位于F島的核電站阀蒂,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏弟蚀。R本人自食惡果不足惜蚤霞,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,873評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望粗梭。 院中可真熱鬧争便,春花似錦、人聲如沸断医。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,357評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至斩启,卻和暖如春序调,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背兔簇。 一陣腳步聲響...
    開封第一講書人閱讀 33,466評論 1 272
  • 我被黑心中介騙來泰國打工发绢, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人垄琐。 一個(gè)月前我還...
    沈念sama閱讀 48,921評論 3 376
  • 正文 我出身青樓边酒,卻偏偏與公主長得像,于是被迫代替她去往敵國和親狸窘。 傳聞我的和親對象是個(gè)殘疾皇子墩朦,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,515評論 2 359

推薦閱讀更多精彩內(nèi)容