JavaScript DOM 9.16

第二章 JavaScript語法

程序設計語言分為解釋型和編譯型兩大類。

Java或C++等語言需要一個編譯器(comoiler)。編譯器是一種程序,能夠把源代碼翻譯成直接在計算機上執行的文件。

解釋型程序設計語言不需要編譯器,只需要解釋器。對于javascript來說,web瀏覽器負責有關解釋執行的工作。

編譯型語言編寫如果有錯誤,這些錯誤在代碼編譯階段就能被發現。而解釋型語言中的代碼錯誤只能等到解釋器執行到有關代碼時才能被發現。

與解釋型語言相比,編譯型語言往往速度更快,可移植性更好,但學習曲線更陡峭。

語句

用js編寫的腳本,由一系列指令構成,這些指令稱為語句(statement)。是構成腳本的基本單位。

變量

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

假如我有一個變量mood,我可以把此時此刻的心情儲存于期中,不管值是happy還是sad,名字都是mood,我可以改變這個值。

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

mood="happy";
age=33

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

alert(mood)
alert(age)

JS允許直接對變量賦值而無需實現聲明。很多程序設計語言是不允許的。很多語言要求在使用審核變量之前對她進行“介紹”,也就是聲明(declare)。在JS中,如果對變量賦值之前沒有聲明,賦值將自動聲明。但是提前聲明變量是一種良好的習慣

var mood;
var age;

var mood,age;相同。

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

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

變量名稱不允許包含空格,標點。語序包含字母,數字,美元符號和下劃線(第一個字符不允許是數字)。為了讓較長名字易讀,可這樣

var my_mood = "happy";

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

var是一個關鍵字,myMood是一個變量名,happy是一個字面量。

數據類型

變量mood的值是一個字符串,變量age的值是一個數,雖然兩種不同類型數據,但在js中聲明和賦值的語法完全一樣。有些其他的語言要求在聲明變量的同時還必須同時聲明數據類型,稱作類型聲明

必須確定聲明類型的語言成為強類型(strongly typed)語言。js不需要類型聲明,因此它是一種弱類型(weakly typed)語言。以為著可以在任何階段改變變量的數據類型。

以下語句在強類型中非法的,但js中完全沒有問題:

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

JS并不在意age的值試一個字符串還是一個數。

1. 字符串

字符串由零個或多個字符組成。字符包括但不限于字母,數字,標點符號和空格。字符串必須抱在引號里,單引號或者雙引號都可以。

2. 數值

賦一個數值給一個變量,可以是小數,成為浮點數。

3.布爾值(boolean)

只有兩個可選值:true 或 false。假設需要這樣一個變量:如果我正在睡覺,這個變量儲存一個值,如果我不在睡覺,這個變量儲存另外一個值。可用字符串賦值為sleeping或者not sleeping,但使用布爾值顯然是一個更好的選擇:

var sleeping = true;

從某種意義上講,為計算機設計程序就是與布爾值打交道。所有的電子電路只能識別和使用布爾值:電路中有無電流。只取2值中的1種。

布爾值不是字符串,不能用引號。

數組(array)

字符串,數值,布爾值都是標量。標量在任意時刻只能有一個值。如果用一個變量來儲存一組值,就需要用數組。在js中數組可以用Array來聲明。,我們可以用名為beatles的變量來保存四位成員名稱。

var beatles = Array(4);   //可指定初始元素個數(長度),也可以不指定
var beatles = Array();

向數組添加元素的操稱為填充(populating)。不僅要給出值,還要給出存放位置,即下標(index)。一個元素配一個下標,用方括號括起來:

beatles[0] = "john";

從0開始作為第一個下標

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

現在我們可以通過beatles[2]來獲取元素george了。

beatles長度為4,可最后一個下標為3,因為下標從0計算的。

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

上述語句會自動分配一個下標。所以beatles[2]還是獲取george、

3. 甚至可以不明確是創建數組,用方括號就行了:
var beatles = ["john","paul","george","ringo"];

數組里元素的數據類型:

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

這把第一個元素賦值為john

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

這樣就把beatles的第二個元素換成了paul

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

現在數組beatles的第一個元素的值是另外一個數組。獲取值需要更多方括號

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

對象

與數組類似,對象也是使用一個名字表示一組值。對象的每個值都是對象的一個屬性,例如lennon數組也可以創建成對象:

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

與數組相似,創建對象使用Object關鍵字。不用方括號和下標來獲取元素,是用點號來獲取屬性。

更簡潔的創建方法:

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

下面創建一個新的beatles數組,用lennon對象填充它第一個元素。

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

現在使用beatles[0].name可得到值john

在此基礎上,進一步改進,把beatles數組也聲明為對象而不是傳統數組,這樣我們就可以用drummer和bassist更有意思的字符串作為下標來訪問數組里的元素了:

var beatles = {}
beatles.vocalist = lennen;

beatles.vocalist.name是john。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,885評論 6 541
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,312評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,993評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,667評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,410評論 6 411
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,778評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,775評論 3 446
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,955評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,521評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,266評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,468評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,998評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,696評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,095評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,385評論 1 294
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,193評論 3 398
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,431評論 2 378

推薦閱讀更多精彩內容

  • 前言 歸根結底,代碼都是思想和概念的體現。沒人能把一種程序設計語言的所有語法和關鍵字都記住,可以查閱參考書來解決。...
    朱細細閱讀 2,956評論 4 14
  • 第二章 JS語法 語句 變量和數組 操作符 條件語句和循環語句 函數與對象 2.1 準備工作 用JS寫的代碼必須通...
    去屎吧閱讀 2,219評論 1 4
  • 無可奈何的離去為了別人和自己的欺騙風兒卷走了我的言語只留下我笨拙的雙眼還記得春天里埋下的那些種子嗎?它們在夏天長成...
    胡三多閱讀 183評論 0 0
  • 親愛的朋友,你好我是陳藍波,今天是2007年7月24日,是我堅持原創的第19天。 昨天給大家分享了,想象力造就今天...
    陳藍波閱讀 1,042評論 0 0
  • 國慶假期結束,新的工作,學習生活,開始了。今天一早,出門,馬路上濕漉漉的,昨天晚上一夜的秋雨積水很多,也讓人們感覺...
    星之夢lyx閱讀 126評論 0 0