JavaScript小結(1)
- JavaScriptss是什麼
- 基本文法
-
- 1. 語句
- 2.變量
- 3.變量提升
- 4.辨別符
- 5.注釋
- 6.區塊
- 7.條件語句
- 8.循環語句
- 9.标簽
- 資料類型
-
- 1.種類
- 2.typeof運算符
- 3.null, undefined 和布爾值
- 4.數值
-
- 4.1 概述
- 4.2 特殊數值
- 5.字元串
- 6.對象
JavaScriptss是什麼
JavaScript 是一種輕量級的腳本語言。
腳本語言(script language),指的是它不具備開發作業系統的能力,而是隻用來編寫控制其他大型應用程式(比如浏覽器)的“腳本”。
JavaScript 也是一種嵌入式(embedded)語言。
它本身提供的核心文法不算很多,隻能用來做一些數學和邏輯運算。
從文法角度看,JavaScript 語言是一種“對象模型”語言。
JavaScript 的核心文法部分相當精簡,隻包括兩個部分:基本的文法構造(比如操作符、控制結構、語句)和标準庫(就是一系列具有各種功能的對象比如Array、Date、Math等)。除此之外,各種宿主環境提供額外的 API(即隻能在該環境使用的接口),以便 JavaScript 調用。以浏覽器為例,它提供的額外 API 可以分成三大類。
- 浏覽器控制類:操作浏覽器
- DOM類:操作網頁的各種元素
- Web類:實作網際網路的各種功能
基本文法
1. 語句
JavaScript 程式的執行機關為行(line)
語句(statement)是為了完成某種任務而進行的操作
2.變量
變量是對“值”的具名引用。變量就是為“值”起名,然後引用這個名字,就等同于引用這個值
var是變量聲明指令。它表示通知解釋引擎,要建立一個變量。
如果隻是聲明變量而沒有指派,則該變量的值是undefined。undefined是一個特殊的值,表示“無定義”。如果使用var重新聲明一個已經存在的變量,是無效的。但是,如果第二次聲明的時候還進行了指派,則會覆寫掉前面的值。
JavaScript 是一種動态類型語言,也就是說,變量的類型沒有限制,變量可以随時更改類型。
3.變量提升
JavaScript 引擎的工作方式是,先解析代碼,擷取所有被聲明的變量,然後再一行一行地運作。這造成的結果,就是所有的變量的聲明語句,都會被提升到代碼的頭部,這就叫做變量提升(hoisting)
4.辨別符
辨別符(identifier)指的是用來識别各種值的合法名稱。最常見的辨別符就是變量名,以及函數名。
簡單說,辨別符命名規則如下:
- 第一個字元,可以是任意 Unicode 字母(包括英文字母和其他語言的字母,如中文),以及美元符号($)和下劃線(_)。
- 第二個字元及後面的字元,除了 Unicode 字母、美元符号和下劃線,還可以用數字0-9。
- 保留字不能用作辨別符
5.注釋
- 單行注釋
- 用//起頭
- JavaScript 可以相容 HTML 代碼的注釋,是以 也被視為合法的單行注釋,需要注意的是,–>隻有在行首,才會被當成單行注釋,否則會當作正常的運算
- 多行注釋,放在之間
6.區塊
JavaScript 使用大括号,将多個相關的語句組合在一起,稱為“區塊”(block)
JavaScript 的區塊不構成單獨的作用域(scope)
7.條件語句
JavaScript 提供if結構和switch結構,完成條件判斷,還有三元運算符?:
有些開發者習慣将常量寫在運算符的左邊,這樣的話,一旦不小心将相等運算符寫成指派運算符,就會報錯,因為常量不能被指派
8.循環語句
JavaScript 提供while結構和for結構
9.标簽
JavaScript 語言允許,語句的前面有标簽(label),相當于定位符,用于跳轉到程式的任意位置,标簽的格式如下:
label:
語句
标簽可以是任意的辨別符,但不能是保留字,語句部分可以是任意語句
break 和 continue 在使用時 ,如在其後加上label名則應用于最外層循環,否則應用于内層循環。
資料類型
1.種類
JavaScript 的資料類型,共有六種。(ES6 又新增了第七種 Symbol 類型的值)
- 數值(number):整數和小數(比如1和3.14)
- 字元串(string):文本(比如Hello World)。
- 布爾值(boolean):表示真僞的兩個特殊值,即true(真)和false(假)
- undefined:表示“未定義”或不存在,即由于目前沒有定義,是以此處暫時沒有任何值
- null:表示空值,即此處的值為空。
- 對象(object):各種值組成的集合。
數值、字元串、布爾值這三種類型,合稱為原始類型(primitive type)的值,對象則稱為合成類型(complex type)的值
對象是最複雜的資料類型,又可以分成三個子類型。
- 狹義的對象(object)
- 數組(array)
- 函數(function)
2.typeof運算符
識别一個值類型的方法
- typeof運算符
- instanceof運算符
- Object.prototype.toString方法
typeof運算符可以傳回一個值的資料類型,數值、字元串、布爾值分别傳回number、string、boolean。typeof可以用來檢查一個沒有聲明的變量,而不報錯。
3.null, undefined 和布爾值
null表示空值,即該處的值現在為空。調用函數時,某個參數未設定任何值,這時就可以傳入null,表示該參數為空。比如,某個函數接受引擎抛出的錯誤作為參數,如果運作過程中未出錯,那麼這個參數就會傳入null,表示未發生錯誤。
undefined表示“未定義”,下面是傳回undefined的典型場景。
// 變量聲明了,但沒有指派
var i;
i // undefined
// 調用函數時,應該提供的參數沒有提供,該參數等于 undefined
function f(x) {
return x;
}
f() // undefined
// 對象沒有指派的屬性
var o = new Object();
o.p // undefined
// 函數沒有傳回值時,預設傳回 undefined
function f() {}
f() // undefined
(其他值轉換為布爾值的)轉換規則是除了下面六個值被轉為false,其他值都視為true。
- undefined
- null
- false
- NaN
- " " 或 ’ '(空字元串)
4.數值
4.1 概述
JavaScript 内部,所有數字都是以64位浮點數形式儲存,即使整數也是如此。是以,1與1.0是相同的,是同一個數。這就是說,JavaScript 語言的底層根本沒有整數,所有數字都是小數(64位浮點數)。容易造成混淆的是,某些運算隻有整數才能完成,此時 JavaScript 會自動把64位浮點數,轉成32位整數,然後再進行運算。
絕對值小于2的53次方的整數,即-253到253,都可以精确表示
JavaScript 能夠表示的數值範圍為21024到2-1023(開區間),超出這個範圍的數無法表示。如果一個數大于等于2的1024次方,那麼就會發生“正向溢出”,即 JavaScript 無法表示這麼大的數,這時就會傳回Infinity。如果一個數小于等于2的-1075次方(指數部分最小值-1023,再加上小數部分的52位),那麼就會發生為“負向溢出”,即 JavaScript 無法表示這麼小的數,這時會直接傳回0。
JavaScript 提供Number對象的MAX_VALUE和MIN_VALUE屬性,傳回可以表示的具體的最大值和最小值
4.2 特殊數值
+0或-0當作分母,傳回的值是不相等的。因為除以正零得到+Infinity,除以負零得到-Infinity,這兩者是不相等的
NaN是 JavaScript 的特殊值,表示“非數字”(Not a Number),主要出現在将字元串解析成數字出錯的場合。0除以0也會得到NaN。NaN不等于任何值,包括它本身。
Infinity表示“無窮”,用來表示兩種場景。一種是一個正的數值太大,或一個負的數值太小,無法表示;另一種是非0數值除以0,得到Infinity。Infinity大于一切數值(除了NaN),-Infinity小于一切數值(除了NaN)。Infinity與NaN比較,總是傳回false。0乘以Infinity,傳回NaN;Infinity減去或除以Infinity,得到NaN;Infinity與undefined計算,傳回的都是NaN。
5.字元串
字元串就是零個或多個排在一起的字元,放在單引号或雙引号之中。單引号字元串的内部,可以使用雙引号。雙引号字元串的内部,可以使用單引号。
字元串預設隻能寫在一行内,分成多行将會報錯,如果長字元串必須分成多行,可以在每一行的尾部使用反斜杠。
反斜杠(\)在字元串内有特殊含義,用來表示一些特殊字元,是以又稱為轉義符。需要用反斜杠轉義的特殊字元,主要有下面這些
- \0 :null(\u0000)
- \b :後退鍵(\u0008)
- \f :換頁符(\u000C)
- \n :換行符(\u000A)
- \r :Enter鍵(\u000D)
- \t :制表符(\u0009)
- \v :垂直制表符(\u000B)
- \’ :單引号(\u0027)
- \" :雙引号(\u0022)
- \\ :反斜杠(\u005C)
JavaScript 使用 Unicode 字元集
6.對象
什麼是對象?簡單說,對象就是一組“鍵值對”(key-value)的集合,是一種無序的複合資料集合。
“鍵名”(成員的名稱),“鍵值”(成員的值)。鍵名與鍵值之間用冒号分隔。
對象的每一個鍵名又稱為“屬性”(property),它的“鍵值”可以是任何資料類型。如果一個屬性的值為函數,通常把這個屬性稱為“方法”,它可以像函數那樣調用。
如果屬性的值還是一個對象,就形成了鍊式引用。