JavaScript DOM 9.16

第二章 JavaScript語(yǔ)法

程序設(shè)計(jì)語(yǔ)言分為解釋型和編譯型兩大類。

Java或C++等語(yǔ)言需要一個(gè)編譯器(comoiler)旬盯。編譯器是一種程序,能夠把源代碼翻譯成直接在計(jì)算機(jī)上執(zhí)行的文件。

解釋型程序設(shè)計(jì)語(yǔ)言不需要編譯器胖翰,只需要解釋器接剩。對(duì)于javascript來(lái)說(shuō),web瀏覽器負(fù)責(zé)有關(guān)解釋執(zhí)行的工作萨咳。

編譯型語(yǔ)言編寫如果有錯(cuò)誤懊缺,這些錯(cuò)誤在代碼編譯階段就能被發(fā)現(xiàn)。而解釋型語(yǔ)言中的代碼錯(cuò)誤只能等到解釋器執(zhí)行到有關(guān)代碼時(shí)才能被發(fā)現(xiàn)培他。

與解釋型語(yǔ)言相比鹃两,編譯型語(yǔ)言往往速度更快,可移植性更好舀凛,但學(xué)習(xí)曲線更陡峭俊扳。

語(yǔ)句

用js編寫的腳本,由一系列指令構(gòu)成腾降,這些指令稱為語(yǔ)句(statement)拣度。是構(gòu)成腳本的基本單位。

變量

人的姓名和生日是固定不變的螃壤,但心情和年齡是變化的抗果,會(huì)變化的東西成為變量(variable)。

假如我有一個(gè)變量mood奸晴,我可以把此時(shí)此刻的心情儲(chǔ)存于期中冤馏,不管值是happy還是sad,名字都是mood寄啼,我可以改變這個(gè)值逮光。

把值存入變量的操作叫做賦值(assignment)。把變量mood賦值為happy墩划,age賦值為33

mood="happy";
age=33

賦值之后則變量包含這個(gè)值涕刚,可以用如下語(yǔ)句把兩個(gè)變量的值顯示在一個(gè)彈出式警告窗口中:

alert(mood)
alert(age)

JS允許直接對(duì)變量賦值而無(wú)需實(shí)現(xiàn)聲明。很多程序設(shè)計(jì)語(yǔ)言是不允許的乙帮。很多語(yǔ)言要求在使用審核變量之前對(duì)她進(jìn)行“介紹”杜漠,也就是聲明(declare)。在JS中察净,如果對(duì)變量賦值之前沒有聲明驾茴,賦值將自動(dòng)聲明。但是提前聲明變量是一種良好的習(xí)慣氢卡。

var mood;
var age;

var mood,age;相同锈至。

var mood = "happy";
var age=33;

var mood = "happy", age = 33相同

變量名稱不允許包含空格,標(biāo)點(diǎn)译秦。語(yǔ)序包含字母峡捡,數(shù)字击碗,美元符號(hào)和下劃線(第一個(gè)字符不允許是數(shù)字)。為了讓較長(zhǎng)名字易讀棋返,可這樣

var my_mood = "happy";

var myMood= "happy";(駝峰格式)首選格式

var是一個(gè)關(guān)鍵字延都,myMood是一個(gè)變量名雷猪,happy是一個(gè)字面量睛竣。

數(shù)據(jù)類型

變量mood的值是一個(gè)字符串,變量age的值是一個(gè)數(shù)求摇,雖然兩種不同類型數(shù)據(jù)射沟,但在js中聲明和賦值的語(yǔ)法完全一樣。有些其他的語(yǔ)言要求在聲明變量的同時(shí)還必須同時(shí)聲明數(shù)據(jù)類型与境,稱作類型聲明验夯。

必須確定聲明類型的語(yǔ)言成為強(qiáng)類型(strongly typed)語(yǔ)言。js不需要類型聲明摔刁,因此它是一種弱類型(weakly typed)語(yǔ)言挥转。以為著可以在任何階段改變變量的數(shù)據(jù)類型。

以下語(yǔ)句在強(qiáng)類型中非法的共屈,但js中完全沒有問(wèn)題:

var age = "thirty three";
age = 33;

JS并不在意age的值試一個(gè)字符串還是一個(gè)數(shù)绑谣。

1. 字符串

字符串由零個(gè)或多個(gè)字符組成。字符包括但不限于字母拗引,數(shù)字借宵,標(biāo)點(diǎn)符號(hào)和空格。字符串必須抱在引號(hào)里矾削,單引號(hào)或者雙引號(hào)都可以壤玫。

2. 數(shù)值

賦一個(gè)數(shù)值給一個(gè)變量,可以是小數(shù)哼凯,成為浮點(diǎn)數(shù)欲间。

3.布爾值(boolean)

只有兩個(gè)可選值:true 或 false。假設(shè)需要這樣一個(gè)變量:如果我正在睡覺断部,這個(gè)變量?jī)?chǔ)存一個(gè)值猎贴,如果我不在睡覺,這個(gè)變量?jī)?chǔ)存另外一個(gè)值家坎≈瞿埽可用字符串賦值為sleeping或者not sleeping,但使用布爾值顯然是一個(gè)更好的選擇:

var sleeping = true;

從某種意義上講虱疏,為計(jì)算機(jī)設(shè)計(jì)程序就是與布爾值打交道惹骂。所有的電子電路只能識(shí)別和使用布爾值:電路中有無(wú)電流。只取2值中的1種做瞪。

布爾值不是字符串对粪,不能用引號(hào)右冻。

數(shù)組(array)

字符串,數(shù)值著拭,布爾值都是標(biāo)量纱扭。標(biāo)量在任意時(shí)刻只能有一個(gè)值。如果用一個(gè)變量來(lái)儲(chǔ)存一組值儡遮,就需要用數(shù)組乳蛾。在js中數(shù)組可以用Array來(lái)聲明。鄙币,我們可以用名為beatles的變量來(lái)保存四位成員名稱肃叶。

var beatles = Array(4);   //可指定初始元素個(gè)數(shù)(長(zhǎng)度),也可以不指定
var beatles = Array();

向數(shù)組添加元素的操稱為填充(populating)。不僅要給出值十嘿,還要給出存放位置因惭,即下標(biāo)(index)。一個(gè)元素配一個(gè)下標(biāo)绩衷,用方括號(hào)括起來(lái):

beatles[0] = "john";

從0開始作為第一個(gè)下標(biāo)

1. 下面是聲明和填充全過(guò)程:
var beatles = Array(4);
beatles[0] = "john";
beatles[1] = "paul";
beatles[2] = "george";
beatles[3] = "ringo";

現(xiàn)在我們可以通過(guò)beatles[2]來(lái)獲取元素george了蹦魔。

beatles長(zhǎng)度為4,可最后一個(gè)下標(biāo)為3咳燕,因?yàn)橄聵?biāo)從0計(jì)算的勿决。

2. 相對(duì)簡(jiǎn)單的方法,聲明時(shí)填充:
var beatles = Array("john","paul","george","ringo");

上述語(yǔ)句會(huì)自動(dòng)分配一個(gè)下標(biāo)迟郎。所以beatles[2]還是獲取george剥险、

3. 甚至可以不明確是創(chuàng)建數(shù)組,用方括號(hào)就行了:
var beatles = ["john","paul","george","ringo"];

數(shù)組里元素的數(shù)據(jù)類型:

1.數(shù)組的元素也不一定是字符串宪肖,布爾值表制,數(shù)值都可以。甚至可以混搭:
var years = [1940,1941,1942,1943];
var lennon = ["john",1940,false];
2.數(shù)組元素還可以是變量:
var name = "john";
beatles[0] = name;

這把第一個(gè)元素賦值為john

3.數(shù)組元素的值還可以是另外一個(gè)數(shù)組的元素
var names = ["ringo","john","george","paul"];
beatles[0] = names[3];

這樣就把beatles的第二個(gè)元素?fù)Q成了paul

4.數(shù)組還可以包含其他數(shù)組控乾,任何一個(gè)元素都可以把一個(gè)數(shù)組作為它的值:
var lennon = ["john",1940,false];
var beatles = [];
beatles[0]= lennon;

現(xiàn)在數(shù)組beatles的第一個(gè)元素的值是另外一個(gè)數(shù)組么介。獲取值需要更多方括號(hào)

beatles [0][0]   //是john
beatles [0][2]   //是false

對(duì)象

與數(shù)組類似,對(duì)象也是使用一個(gè)名字表示一組值蜕衡。對(duì)象的每個(gè)值都是對(duì)象的一個(gè)屬性壤短,例如lennon數(shù)組也可以創(chuàng)建成對(duì)象:

var lennon = Object();
lennon.name = "john";
lennon.year = 1940;
lennon.living = false;

與數(shù)組相似,創(chuàng)建對(duì)象使用Object關(guān)鍵字慨仿。不用方括號(hào)和下標(biāo)來(lái)獲取元素久脯,是用點(diǎn)號(hào)來(lái)獲取屬性。

更簡(jiǎn)潔的創(chuàng)建方法:

var lennon = {name:"john",year:1940,living:false};

下面創(chuàng)建一個(gè)新的beatles數(shù)組镰吆,用lennon對(duì)象填充它第一個(gè)元素帘撰。

var beatles=array();
beatles[0]=lennon;

現(xiàn)在使用beatles[0].name可得到值john

在此基礎(chǔ)上,進(jìn)一步改進(jìn)万皿,把beatles數(shù)組也聲明為對(duì)象而不是傳統(tǒng)數(shù)組摧找,這樣我們就可以用drummer和bassist更有意思的字符串作為下標(biāo)來(lái)訪問(wèn)數(shù)組里的元素了:

var beatles = {}
beatles.vocalist = lennen;

beatles.vocalist.name是john核行。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市蹬耘,隨后出現(xiàn)的幾起案子芝雪,更是在濱河造成了極大的恐慌,老刑警劉巖综苔,帶你破解...
    沈念sama閱讀 212,454評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件惩系,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡休里,警方通過(guò)查閱死者的電腦和手機(jī)蛆挫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門赃承,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)妙黍,“玉大人,你說(shuō)我怎么就攤上這事瞧剖∈眉蓿” “怎么了?”我有些...
    開封第一講書人閱讀 157,921評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵抓于,是天一觀的道長(zhǎng)做粤。 經(jīng)常有香客問(wèn)我,道長(zhǎng)捉撮,這世上最難降的妖魔是什么怕品? 我笑而不...
    開封第一講書人閱讀 56,648評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮巾遭,結(jié)果婚禮上肉康,老公的妹妹穿的比我還像新娘。我一直安慰自己灼舍,他們只是感情好吼和,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,770評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著骑素,像睡著了一般炫乓。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上献丑,一...
    開封第一講書人閱讀 49,950評(píng)論 1 291
  • 那天末捣,我揣著相機(jī)與錄音,去河邊找鬼创橄。 笑死箩做,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的筐摘。 我是一名探鬼主播卒茬,決...
    沈念sama閱讀 39,090評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼船老,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了圃酵?” 一聲冷哼從身側(cè)響起柳畔,我...
    開封第一講書人閱讀 37,817評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎郭赐,沒想到半個(gè)月后薪韩,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,275評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡捌锭,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,592評(píng)論 2 327
  • 正文 我和宋清朗相戀三年俘陷,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片观谦。...
    茶點(diǎn)故事閱讀 38,724評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡拉盾,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出豁状,到底是詐尸還是另有隱情捉偏,我是刑警寧澤,帶...
    沈念sama閱讀 34,409評(píng)論 4 333
  • 正文 年R本政府宣布泻红,位于F島的核電站夭禽,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏谊路。R本人自食惡果不足惜讹躯,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,052評(píng)論 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望缠劝。 院中可真熱鬧潮梯,春花似錦、人聲如沸剩彬。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)喉恋。三九已至沃饶,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間轻黑,已是汗流浹背糊肤。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留氓鄙,地道東北人馆揉。 一個(gè)月前我還...
    沈念sama閱讀 46,503評(píng)論 2 361
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像抖拦,于是被迫代替她去往敵國(guó)和親升酣。 傳聞我的和親對(duì)象是個(gè)殘疾皇子舷暮,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,627評(píng)論 2 350

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

  • 前言 歸根結(jié)底,代碼都是思想和概念的體現(xiàn)噩茄。沒人能把一種程序設(shè)計(jì)語(yǔ)言的所有語(yǔ)法和關(guān)鍵字都記住下面,可以查閱參考書來(lái)解決。...
    朱細(xì)細(xì)閱讀 2,920評(píng)論 4 14
  • 第二章 JS語(yǔ)法 語(yǔ)句 變量和數(shù)組 操作符 條件語(yǔ)句和循環(huán)語(yǔ)句 函數(shù)與對(duì)象 2.1 準(zhǔn)備工作 用JS寫的代碼必須通...
    去屎吧閱讀 2,200評(píng)論 1 4
  • 無(wú)可奈何的離去為了別人和自己的欺騙風(fēng)兒卷走了我的言語(yǔ)只留下我笨拙的雙眼還記得春天里埋下的那些種子嗎绩聘?它們?cè)谙奶扉L(zhǎng)成...
    胡三多閱讀 176評(píng)論 0 0
  • 親愛的朋友沥割,你好我是陳藍(lán)波,今天是2007年7月24日凿菩,是我堅(jiān)持原創(chuàng)的第19天机杜。 昨天給大家分享了,想象力造就今天...
    陳藍(lán)波閱讀 1,029評(píng)論 0 0
  • 國(guó)慶假期結(jié)束衅谷,新的工作椒拗,學(xué)習(xí)生活,開始了会喝。今天一早陡叠,出門,馬路上濕漉漉的肢执,昨天晚上一夜的秋雨積水很多,也讓人們感覺...
    星之夢(mèng)lyx閱讀 122評(píng)論 0 0