基本語法

語句

JavaScript 程序的執(zhí)行單位為行(line)吠各,也就是一行一行地執(zhí)行翎嫡。一般情況下欠动,每一行就是一個語句。

語句(statement)是為了完成某種任務(wù)而進行的操作惑申,比如下面就是一行賦值語句具伍。

var a = 1 + 3;

這條語句先用var命令,聲明了變量a圈驼,然后將1 + 3的運算結(jié)果賦值給變量a岛马。

1 + 3叫做表達式(expression)必搞,指一個為了得到返回值的計算式蛀缝。語句和表達式的區(qū)別在于暇藏,前者主要為了進行某種操作,一般情況下不需要返回值靴迫;后者則是為了得到返回值惕味,一定會返回一個值。凡是 JavaScript 語言中預期為值的地方玉锌,都可以使用表達式赦拘。比如,賦值語句的等號右邊芬沉,預期是一個值,因此可以放置各種表達式阁猜。

語句以分號結(jié)尾丸逸,一個分號就表示一個語句結(jié)束。多個語句可以寫在一行內(nèi)剃袍。

var a = 1 + 3 ; var b = 'abc';

分號前面可以沒有任何內(nèi)容黄刚,JavaScript引擎將其視為空語句。

;;;

上面的代碼就表示3個空語句民效。

表達式不需要分號結(jié)尾憔维。一旦在表達式后面添加分號涛救,則 JavaScript 引擎就將表達式視為語句,這樣會產(chǎn)生一些沒有任何意義的語句业扒。

1 + 3;
'abc';

上面兩行語句只是單純地產(chǎn)生一個值检吆,并沒有任何實際的意義。

變量

概念

變量是對“值”的具名引用程储。變量就是為“值”起名蹭沛,然后引用這個名字,就等同于引用這個值章鲤。變量的名字就是變量名摊灭。

var a = 1;

上面的代碼先聲明變量a,然后在變量a與數(shù)值1之間建立引用關(guān)系败徊,稱為將數(shù)值1“賦值”給變量a帚呼。以后,引用變量名a就會得到數(shù)值1皱蹦。最前面的var煤杀,是變量聲明命令。它表示通知解釋引擎根欧,要創(chuàng)建一個變量a怜珍。

注意,JavaScript 的變量名區(qū)分大小寫凤粗,Aa是兩個不同的變量酥泛。

變量的聲明和賦值,是分開的兩個步驟嫌拣,上面的代碼將它們合在了一起柔袁,實際的步驟是下面這樣。

var a;
a = 1;

如果只是聲明變量而沒有賦值异逐,則該變量的值是undefined捶索。undefined是一個 JavaScript 關(guān)鍵字,表示“無定義”灰瞻。

var a;
a // undefined

如果變量賦值的時候腥例,忘了寫var命令,這條語句也是有效的酝润。

var a = 1;
// 基本等同
a = 1;

但是燎竖,不寫var的做法,不利于表達意圖要销,而且容易不知不覺地創(chuàng)建全局變量构回,所以建議總是使用var命令聲明變量。

如果一個變量沒有聲明就直接使用,JavaScript 會報錯纤掸,告訴你變量未定義脐供。

x
// ReferenceError: x is not defined

上面代碼直接使用變量x,系統(tǒng)就報錯借跪,告訴你變量x沒有聲明政己。

可以在同一條var命令中聲明多個變量。

var a, b;

JavaScript 是一種動態(tài)類型語言垦梆,也就是說匹颤,變量的類型沒有限制,變量可以隨時更改類型托猩。

var a = 1;
a = 'hello';

上面代碼中印蓖,變量a起先被賦值為一個數(shù)值,后來又被重新賦值為一個字符串京腥。第二次賦值的時候赦肃,因為變量a已經(jīng)存在,所以不需要使用var命令公浪。

如果使用var重新聲明一個已經(jīng)存在的變量他宛,是無效的。

var x = 1;
var x;
x // 1

上面代碼中欠气,變量x聲明了兩次厅各,第二次聲明是無效的。

但是预柒,如果第二次聲明的時候還進行了賦值队塘,則會覆蓋掉前面的值。

var x = 1;
var x = 2;

// 等同于

var x = 1;
var x;
x = 2;

變量提升

JavaScript 引擎的工作方式是宜鸯,先解析代碼憔古,獲取所有被聲明的變量,然后再一行一行地運行淋袖。這造成的結(jié)果鸿市,就是所有的變量的聲明語句,都會被提升到代碼的頭部即碗,這就叫做變量提升(hoisting)焰情。

console.log(a);
var a = 1;

上面代碼首先使用console.log方法,在控制臺(console)顯示變量a的值剥懒。這時變量a還沒有聲明和賦值烙样,所以這是一種錯誤的做法,但是實際上不會報錯蕊肥。因為存在變量提升,真正運行的是下面的代碼。

var a;
console.log(a);
a = 1;

最后的結(jié)果是顯示undefined壁却,表示變量a已聲明批狱,但還未賦值。

標識符

標識符(identifier)指的是用來識別各種值的合法名稱展东。最常見的標識符就是變量名赔硫,以及后面要提到的函數(shù)名。JavaScript 語言的標識符對大小寫敏感盐肃,所以aA是兩個不同的標識符爪膊。

標識符有一套命名規(guī)則,不符合規(guī)則的就是非法標識符砸王。JavaScript 引擎遇到非法標識符推盛,就會報錯。

簡單說谦铃,標識符命名規(guī)則如下耘成。

  • 第一個字符,可以是任意 Unicode 字母(包括英文字母和其他語言的字母)驹闰,以及美元符號($)和下劃線(_)瘪菌。
  • 第二個字符及后面的字符,除了 Unicode 字母嘹朗、美元符號和下劃線师妙,還可以用數(shù)字0-9

下面這些都是合法的標識符屹培。

arg0
_tmp
$elem
π

下面這些則是不合法的標識符默穴。

1a  // 第一個字符不能是數(shù)字
23  // 同上
***  // 標識符不能包含星號
a+b  // 標識符不能包含加號
-d  // 標識符不能包含減號或連詞線

中文是合法的標識符,可以用作變量名惫谤。

var 臨時變量 = 1;

JavaScript有一些保留字壁顶,不能用作標識符:arguments、break溜歪、case若专、catch、class蝴猪、const调衰、continue、debugger自阱、default嚎莉、delete、do沛豌、else趋箩、enum赃额、eval、export叫确、extends跳芳、false、finally竹勉、for飞盆、function、if次乓、implements吓歇、import、in票腰、instanceof城看、interface、let丧慈、new析命、null、package逃默、private鹃愤、protected、public完域、return软吐、static、super吟税、switch凹耙、this、throw肠仪、true肖抱、try、typeof异旧、var意述、void、while吮蛹、with荤崇、yield。

注釋

源碼中被 JavaScript 引擎忽略的部分就叫做注釋潮针,它的作用是對代碼進行解釋术荤。Javascript 提供兩種注釋的寫法:一種是單行注釋,用//起頭每篷;另一種是多行注釋瓣戚,放在/**/之間端圈。

// 這是單行注釋

/*
 這是
 多行
 注釋
*/

此外,由于歷史上 JavaScript 可以兼容 HTML 代碼的注釋带兜,所以``也被視為合法的單行注釋枫笛。

x = 1; <!-- x = 2;
--> x = 3;

上面代碼中,只有x = 1會執(zhí)行刚照,其他的部分都被注釋掉了。

需要注意的是喧兄,-->只有在行首无畔,才會被當成單行注釋,否則會當作正常的運算吠冤。

function countdown(n) {
  while (n --> 0) console.log(n);
}
countdown(3)
// 2
// 1
// 0

上面代碼中浑彰,n --> 0實際上會當作n-- > 0,因此輸出2拯辙、1郭变、0。

區(qū)塊

JavaScript 使用大括號涯保,將多個相關(guān)的語句組合在一起诉濒,稱為“區(qū)塊”(block)。

對于var命令來說夕春,JavaScript 的區(qū)塊不構(gòu)成單獨的作用域(scope)未荒。

{
  var a = 1;
}

a // 1

上面代碼在區(qū)塊內(nèi)部,使用var命令聲明并賦值了變量a及志,然后在區(qū)塊外部片排,變量a依然有效,區(qū)塊對于var命令不構(gòu)成單獨的作用域速侈,與不使用區(qū)塊的情況沒有任何區(qū)別率寡。在 JavaScript 語言中,單獨使用區(qū)塊并不常見倚搬,區(qū)塊往往用來構(gòu)成其他更復雜的語法結(jié)構(gòu)冶共,比如forif潭枣、while比默、function等。

條件語句

JavaScript 提供if結(jié)構(gòu)和switch結(jié)構(gòu)盆犁,完成條件判斷命咐,即只有滿足預設(shè)的條件,才會執(zhí)行相應(yīng)的語句谐岁。

if 結(jié)構(gòu)

if結(jié)構(gòu)先判斷一個表達式的布爾值醋奠,然后根據(jù)布爾值的真?zhèn)伍痪剩瑘?zhí)行不同的語句。所謂布爾值窜司,指的是 JavaScript 的兩個特殊值沛善,true表示真,false表示塞祈。

if (布爾值)
  語句;

// 或者
if (布爾值) 語句;

上面是if結(jié)構(gòu)的基本形式金刁。需要注意的是,“布爾值”往往由一個條件表達式產(chǎn)生的议薪,必須放在圓括號中尤蛮,表示對表達式求值。如果表達式的求值結(jié)果為true斯议,就執(zhí)行緊跟在后面的語句产捞;如果結(jié)果為false,則跳過緊跟在后面的語句哼御。

if (m === 3)
  m = m + 1;

上面代碼表示坯临,只有在m等于3時,才會將其值加上1恋昼。

這種寫法要求條件表達式后面只能有一個語句看靠。如果想執(zhí)行多個語句,必須在if的條件判斷之后焰雕,加上大括號衷笋,表示代碼塊(多個語句合并成一個語句)。

if (m === 3) {
  m += 1;
}

建議總是在if語句中使用大括號矩屁,因為這樣方便插入語句辟宗。

注意,if后面的表達式之中吝秕,不要混淆賦值表達式(=)泊脐、嚴格相等運算符(===)和相等運算符(==)。尤其是賦值表達式不具有比較作用烁峭。

var x = 1;
var y = 2;
if (x = y) {
  console.log(x);
}
// "2"

上面代碼的原意是容客,當x等于y的時候,才執(zhí)行相關(guān)語句约郁。但是缩挑,不小心將嚴格相等運算符寫成賦值表達式,結(jié)果變成了將y賦值給變量x鬓梅,再判斷變量x的值(等于2)的布爾值(結(jié)果為true)供置。

這種錯誤可以正常生成一個布爾值,因而不會報錯绽快。為了避免這種情況芥丧,有些開發(fā)者習慣將常量寫在運算符的左邊紧阔,這樣的話,一旦不小心將相等運算符寫成賦值運算符续担,就會報錯擅耽,因為常量不能被賦值。

if (x = 2) { // 不報錯
if (2 = x) { // 報錯

至于為什么優(yōu)先采用“嚴格相等運算符”(===)物遇,而不是“相等運算符”(==)乖仇,請參考《運算符》章節(jié)。

if…else 結(jié)構(gòu)

if代碼塊后面询兴,還可以跟一個else代碼塊这敬,表示不滿足條件時,所要執(zhí)行的代碼蕉朵。

if (m === 3) {
  // 滿足條件時,執(zhí)行的語句
} else {
  // 不滿足條件時阳掐,執(zhí)行的語句
}

上面代碼判斷變量m是否等于3始衅,如果等于就執(zhí)行if代碼塊,否則執(zhí)行else代碼塊缭保。

對同一個變量進行多次判斷時汛闸,多個if...else語句可以連寫在一起。

if (m === 0) {
  // ...
} else if (m === 1) {
  // ...
} else if (m === 2) {
  // ...
} else {
  // ...
}

else代碼塊總是與離自己最近的那個if語句配對艺骂。

var m = 1;
var n = 2;

if (m !== 1)
if (n === 2) console.log('hello');
else console.log('world');

上面代碼不會有任何輸出诸老,else代碼塊不會得到執(zhí)行,因為它跟著的是最近的那個if語句钳恕,相當于下面這樣别伏。

if (m !== 1) {
  if (n === 2) {
    console.log('hello');   
  } else {
    console.log('world');
  }
}

如果想讓else代碼塊跟隨最上面的那個if語句,就要改變大括號的位置忧额。

if (m !== 1) {
  if (n === 2) {
    console.log('hello');   
  }
} else {
  console.log('world');
}
// world

switch結(jié)構(gòu)

多個if...else連在一起使用的時候厘肮,可以轉(zhuǎn)為使用更方便的switch結(jié)構(gòu)。

switch (fruit) {
  case "banana":
    // ...
    break;
  case "apple":
    // ...
    break;
  default:
    // ...
}

上面代碼根據(jù)變量fruit的值睦番,選擇執(zhí)行相應(yīng)的case类茂。如果所有case都不符合,則執(zhí)行最后的default部分托嚣。需要注意的是巩检,每個case代碼塊內(nèi)部的break語句不能少,否則會接下去執(zhí)行下一個case代碼塊示启,而不是跳出switch結(jié)構(gòu)兢哭。

var x = 1;

switch (x) {
  case 1:
    console.log('x 等于1');
  case 2:
    console.log('x 等于2');
  default:
    console.log('x 等于其他值');
}
// x等于1
// x等于2
// x等于其他值

上面代碼中,case代碼塊之中沒有break語句丑搔,導致不會跳出switch結(jié)構(gòu)厦瓢,而會一直執(zhí)行下去提揍。正確的寫法是像下面這樣。

switch (x) {
  case 1:
    console.log('x 等于1');
    break;
  case 2:
    console.log('x 等于2');
    break;
  default:
    console.log('x 等于其他值');
}

switch語句部分和case語句部分煮仇,都可以使用表達式劳跃。

switch(1 + 3) {
  case 2 + 2:
    f();
    break;
  default:
    neverHappens();
}

上面代碼的default部分,是永遠不會執(zhí)行到的浙垫。

需要注意的是刨仑,switch語句后面的表達式,與case語句后面的表示式比較運行結(jié)果時夹姥,采用的是嚴格相等運算符(===)杉武,而不是相等運算符(==),這意味著比較時不會發(fā)生類型轉(zhuǎn)換辙售。

var x = 1;

switch (x) {
  case true:
    console.log('x 發(fā)生類型轉(zhuǎn)換');
  default:
    console.log('x 沒有發(fā)生類型轉(zhuǎn)換');
}
// x 沒有發(fā)生類型轉(zhuǎn)換

上面代碼中轻抱,由于變量x沒有發(fā)生類型轉(zhuǎn)換,所以不會執(zhí)行case true的情況旦部。這表明祈搜,switch語句內(nèi)部采用的是“嚴格相等運算符”,詳細解釋請參考《運算符》一節(jié)士八。

三元運算符 ?:

JavaScript還有一個三元運算符(即該運算符需要三個運算子)?:容燕,也可以用于邏輯判斷。

(條件) ? 表達式1 : 表達式2

上面代碼中婚度,如果“條件”為true蘸秘,則返回“表達式1”的值,否則返回“表達式2”的值蝗茁。

var even = (n % 2 === 0) ? true : false;

上面代碼中醋虏,如果n可以被2整除,則even等于true评甜,否則等于false灰粮。它等同于下面的形式。

var even;
if (n % 2 === 0) {
  even = true;
} else {
  even = false;
}

這個三元運算符可以被視為if...else...的簡寫形式忍坷,因此可以用于多種場合粘舟。

var myVar;
console.log(
  myVar ?
  'myVar has a value' :
  'myVar do not has a value'
)
// myVar do not has a value

上面代碼利用三元運算符,輸出相應(yīng)的提示佩研。

var msg = '數(shù)字' + n + '是' + (n % 2 === 0 ? '偶數(shù)' : '奇數(shù)');

上面代碼利用三元運算符柑肴,在字符串之中插入不同的值。

循環(huán)語句

循環(huán)語句用于重復執(zhí)行某個操作旬薯,它有多種形式晰骑。

while 循環(huán)

While語句包括一個循環(huán)條件和一段代碼塊,只要條件為真,就不斷循環(huán)執(zhí)行代碼塊硕舆。

while (條件)
  語句;

// 或者
while (條件) 語句;

while語句的循環(huán)條件是一個表達式秽荞,必須放在圓括號中。代碼塊部分抚官,如果只有一條語句扬跋,可以省略大括號,否則就必須加上大括號凌节。

while (條件) {
  語句;
}

下面是while語句的一個例子钦听。

var i = 0;

while (i < 100) {
  console.log('i 當前為:' + i);
  i = i + 1;
}

上面的代碼將循環(huán)100次,直到i等于100為止倍奢。

下面的例子是一個無限循環(huán)朴上,因為循環(huán)條件總是為真。

while (true) {
  console.log('Hello, world');
}

for 循環(huán)

for語句是循環(huán)命令的另一種形式卒煞,可以指定循環(huán)的起點痪宰、終點和終止條件。它的格式如下畔裕。

for (初始化表達式; 條件; 遞增表達式)
  語句

// 或者

for (初始化表達式; 條件; 遞增表達式) {
  語句
}

for語句后面的括號里面酵镜,有三個表達式。

  • 初始化表達式(initialize):確定循環(huán)變量的初始值柴钻,只在循環(huán)開始時執(zhí)行一次。
  • 條件表達式(test):每輪循環(huán)開始時垢粮,都要執(zhí)行這個條件表達式贴届,只有值為真,才繼續(xù)進行循環(huán)蜡吧。
  • 遞增表達式(increment):每輪循環(huán)的最后一個操作毫蚓,通常用來遞增循環(huán)變量。

下面是一個例子昔善。

var x = 3;
for (var i = 0; i < x; i++) {
  console.log(i);
}
// 0
// 1
// 2

上面代碼中元潘,初始化表達式是var i = 0,即初始化一個變量i君仆;測試表達式是i < x翩概,即只要i小于x,就會執(zhí)行循環(huán)返咱;遞增表達式是i++钥庇,即每次循環(huán)結(jié)束后,i增大1咖摹。

所有for循環(huán)评姨,都可以改寫成while循環(huán)。上面的例子改為while循環(huán)萤晴,代碼如下吐句。

var x = 3;
var i = 0;

while (i < x) {
  console.log(i);
  i++;
}

for語句的三個部分(initialize胁后、test、increment)嗦枢,可以省略任何一個攀芯,也可以全部省略。

for ( ; ; ){
  console.log('Hello World');
}

上面代碼省略了for語句表達式的三個部分净宵,結(jié)果就導致了一個無限循環(huán)敲才。

do…while 循環(huán)

do...while循環(huán)與while循環(huán)類似,唯一的區(qū)別就是先運行一次循環(huán)體择葡,然后判斷循環(huán)條件紧武。

do
  語句
while (條件);

// 或者
do {
  語句
} while (條件);

不管條件是否為真,do...while循環(huán)至少運行一次敏储,這是這種結(jié)構(gòu)最大的特點阻星。另外,while語句后面的分號注意不要省略已添。

下面是一個例子妥箕。

var x = 3;
var i = 0;

do {
  console.log(i);
  i++;
} while(i < x);

break 語句和 continue 語句

break語句和continue語句都具有跳轉(zhuǎn)作用,可以讓代碼不按既有的順序執(zhí)行更舞。

break語句用于跳出代碼塊或循環(huán)畦幢。

var i = 0;

while(i < 100) {
  console.log('i 當前為:' + i);
  i++;
  if (i === 10) break;
}

上面代碼只會執(zhí)行10次循環(huán),一旦i等于10缆蝉,就會跳出循環(huán)宇葱。

for循環(huán)也可以使用break語句跳出循環(huán)。

for (var i = 0; i < 5; i++) {
  console.log(i);
  if (i === 3)
    break;
}
// 0
// 1
// 2
// 3

上面代碼執(zhí)行到i等于3刊头,就會跳出循環(huán)黍瞧。

continue語句用于立即終止本輪循環(huán),返回循環(huán)結(jié)構(gòu)的頭部原杂,開始下一輪循環(huán)印颤。

var i = 0;

while (i < 100){
  i++;
  if (i % 2 === 0) continue;
  console.log('i 當前為:' + i);
}

上面代碼只有在i為奇數(shù)時,才會輸出i的值穿肄。如果i為偶數(shù)年局,則直接進入下一輪循環(huán)。

如果存在多重循環(huán)咸产,不帶參數(shù)的break語句和continue語句都只針對最內(nèi)層循環(huán)某宪。

標簽(label)

JavaScript 語言允許,語句的前面有標簽(label)锐朴,相當于定位符兴喂,用于跳轉(zhuǎn)到程序的任意位置,標簽的格式如下。

label:
  語句

標簽可以是任意的標識符衣迷,但不能是保留字畏鼓,語句部分可以是任意語句。

標簽通常與break語句和continue語句配合使用壶谒,跳出特定的循環(huán)云矫。

top:
  for (var i = 0; i < 3; i++){
    for (var j = 0; j < 3; j++){
      if (i === 1 && j === 1) break top;
      console.log('i=' + i + ', j=' + j);
    }
  }
// i=0, j=0
// i=0, j=1
// i=0, j=2
// i=1, j=0

上面代碼為一個雙重循環(huán)區(qū)塊,break命令后面加上了top標簽(注意汗菜,top不用加引號)让禀,滿足條件時,直接跳出雙層循環(huán)陨界。如果break語句后面不使用標簽巡揍,則只能跳出內(nèi)層循環(huán),進入下一次的外層循環(huán)菌瘪。

continue語句也可以與標簽配合使用腮敌。

top:
  for (var i = 0; i < 3; i++){
    for (var j = 0; j < 3; j++){
      if (i === 1 && j === 1) continue top;
      console.log('i=' + i + ', j=' + j);
    }
  }
// i=0, j=0
// i=0, j=1
// i=0, j=2
// i=1, j=0
// i=2, j=0
// i=2, j=1
// i=2, j=2

上面代碼中,continue命令后面有一個標簽名俏扩,滿足條件時糜工,會跳過當前循環(huán),直接進入下一輪外層循環(huán)录淡。如果continue語句后面不使用標簽捌木,則只能進入下一輪的內(nèi)層循環(huán)。

參考鏈接

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末嫉戚,一起剝皮案震驚了整個濱河市钮莲,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌彼水,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,123評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件极舔,死亡現(xiàn)場離奇詭異凤覆,居然都是意外死亡,警方通過查閱死者的電腦和手機拆魏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評論 2 384
  • 文/潘曉璐 我一進店門盯桦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人渤刃,你說我怎么就攤上這事拥峦。” “怎么了卖子?”我有些...
    開封第一講書人閱讀 156,723評論 0 345
  • 文/不壞的土叔 我叫張陵略号,是天一觀的道長。 經(jīng)常有香客問我,道長玄柠,這世上最難降的妖魔是什么突梦? 我笑而不...
    開封第一講書人閱讀 56,357評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮羽利,結(jié)果婚禮上宫患,老公的妹妹穿的比我還像新娘。我一直安慰自己这弧,他們只是感情好娃闲,可當我...
    茶點故事閱讀 65,412評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著匾浪,像睡著了一般皇帮。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上户矢,一...
    開封第一講書人閱讀 49,760評論 1 289
  • 那天玲献,我揣著相機與錄音,去河邊找鬼梯浪。 笑死捌年,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的挂洛。 我是一名探鬼主播礼预,決...
    沈念sama閱讀 38,904評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼虏劲!你這毒婦竟也來了托酸?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,672評論 0 266
  • 序言:老撾萬榮一對情侶失蹤柒巫,失蹤者是張志新(化名)和其女友劉穎励堡,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體堡掏,經(jīng)...
    沈念sama閱讀 44,118評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡应结,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,456評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了泉唁。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片鹅龄。...
    茶點故事閱讀 38,599評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖亭畜,靈堂內(nèi)的尸體忽然破棺而出扮休,到底是詐尸還是另有隱情,我是刑警寧澤拴鸵,帶...
    沈念sama閱讀 34,264評論 4 328
  • 正文 年R本政府宣布玷坠,位于F島的核電站蜗搔,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏侨糟。R本人自食惡果不足惜碍扔,卻給世界環(huán)境...
    茶點故事閱讀 39,857評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望秕重。 院中可真熱鬧不同,春花似錦、人聲如沸溶耘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽凳兵。三九已至百新,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間庐扫,已是汗流浹背饭望。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留形庭,地道東北人铅辞。 一個月前我還...
    沈念sama閱讀 46,286評論 2 360
  • 正文 我出身青樓哀蘑,卻偏偏與公主長得像粗梭,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子拳球,可洞房花燭夜當晚...
    茶點故事閱讀 43,465評論 2 348

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

  • 第2章 基本語法 2.1 概述 基本句法和變量 語句 JavaScript程序的執(zhí)行單位為行(line)富纸,也就是一...
    悟名先生閱讀 4,131評論 0 13
  • 最近比較煩囤踩,點背的時候,喝涼水都是塞牙的晓褪,其實我也很想趕項目堵漱,把后臺接口寫好,但是我還是姥姥實實的把基礎(chǔ)語法搞個大...
    _信仰zmh閱讀 1,332評論 1 8
  • 1、標識符 標識符是指變量变过、函數(shù)、屬性的名字涝涤,或函數(shù)的參數(shù)媚狰。 格式規(guī)則: 第一個字符必須是一個字母、下劃線(_)或...
    霜天曉閱讀 693評論 0 0
  • 在11.23號的“冬吳同學會 ”節(jié)目中阔拳,吳伯凡老師講了一個關(guān)于蝗蟲與鐵線蟲的故事: 蝗蟲在潮濕的環(huán)境繁殖崭孤,在干燥的...
    鄧文達閱讀 2,958評論 1 1
  • My favorite person is chenyuelin . She is a nice g...
    5520田欣雨閱讀 418評論 0 0