Hello, world!
“script” 標籤
JavaScript 程序可以使用 <script>
標籤插入到 HTML 的任何地方。
<!DOCTYPE HTML>
<html>
<body>
<p>script 標籤之前...</p>
<script>
alert('Hello, world!');
</script>
<p>...script 標籤之後</p>
</body>
</html>
<script>
標籤中包裹了 JavaScript 代碼,當瀏覽器遇到 <script>
標籤,代碼會自動運行。
外部腳本
如果你有大量的 JavaScript 代碼,我們可以將它放入一個單獨的文件。
腳本文件可以通過 src
屬性添加到 HTML 文件中。
<script src="/path/to/script.js"></script>
這裏,/path/to/script.js
是腳本文件的絕對路徑(從站點根目錄開始)。
也可以提供相對於當前頁面的相對路徑。比如,src="script.js"
意思是來自當前文件夾的 "script.js"
文件。
我們還可以提供一個完整的 URL 地址,例如:
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/3.2.0/lodash.js"></script>
總結
- 我們可以使用一個
<script>
標籤將 JavaScript 代碼添加到頁面中。 type
和language
屬性不是必需的。- 外部的腳本可以通過
<script src="path/to/script.js"></script>
這種方式插入。
變量
一個變量
一個 變量 是數據的“命名存儲”。我們可以使用變量來保存商品、訪客和其他信息。
在 JavaScript 中創建一個變量,我們需要用到 let
關鍵字。
下面的語句創建(換句話說,聲明或者定義)了一個名稱爲“message”的變量:
let message;
現在,通過賦值操作符 =
爲變量添加一些數據:
let message;
message = 'Hello!';
alert(message); // 顯示變量內容
var
而不是 let
var message = 'Hello';
var
關鍵字與 let
大體相同,也用來聲明變量,但稍微有些不同,也有點“老派”。
變量命名
JavaScript 的變量命名有兩個限制:
- 變量名稱必須僅包含字母,數字,符號
$
和_
。 - 首字符必須非數字。
區分大小寫
命名爲 apple
和 AppLE
的變量是不同的兩個變量。
允許非英文字母,但不推薦
保留字
單詞 let
、class
、return
、function
被保留。
常量
聲明一個常數(不變)變量,可以使用 const
而非 let
。使用 const
聲明的變量稱爲“常量”。它們不能被修改,嘗試這樣做就會造成錯誤:
const myBirthday = '18.04.1982';
myBirthday = '01.01.2001'; // 錯誤,不能對常量重新賦值
大寫形式的常數
這些常量使用大寫和下劃線命名。
const COLOR_RED = "#F00";
const COLOR_GREEN = "#0F0";
const COLOR_BLUE = "#00F";
const COLOR_ORANGE = "#FF7F00";
// ...當需要選擇一個顏色
let color = COLOR_ORANGE;
alert(color); // #FF7F00
好處:
COLOR_ORANGE
比"#FF7F00"
更容易記憶。- 比起
COLOR_ORANGE
而言,"#FF7F00"
更容易輸錯。 - 閱讀代碼時,
COLOR_ORANGE
比#FF7F00
更有含義。
總結
我們可以聲明變量來存儲數據。可以通過使用 var
、let
或者 const
來完成。
let
– 新時代的變量聲明方式。Chrome(V8)中代碼必須開啓嚴格模式以使用let
。var
– 舊時代的變量聲明方式。一般情況下,我們不會使用它。但是,我們會在 舊時的 "var" 章節介紹var
和let
的微妙差別,以防你需要它們。const
– 類似於let
,但是變量的值無法被修改。
變量應當以一種容易理解變量內部是什麼的方式進行命名。
數據類型
number 類型
number 類型用於整數和浮點數。
數字有很多操作,比如,乘法 *
、除法 /
、加法 +
、減法 -
等等。
除了常規的數字,還包括所謂的“特殊數值”也屬於這種類型:Infinity
、-Infinity
和 NaN
。
let n = 123;
n = 12.345;
alert( 1 / 0 ); // Infinity
alert( "not a number" / 2 ); // NaN, 這樣的除法是錯誤的
alert( "not a number" / 2 + 5 ); // NaN
string 類型
JavaScript 中的字符串必須被包含在引號裏面。沒有 character 類型
在 JavaScript 中,有三種包含字符串的方式。
- 雙引號:
"Hello"
. - 單引號:
'Hello'
. - 反引號:
`Hello`
.
雙引號和單引號都是“簡單”引用,在 JavaScript 中兩者並沒有什麼差別。
反引號是功能擴展的引用,允許通過 ${…}
,將變量和表達式嵌入到字符串中
let str = "Hello";
let str2 = 'Single quotes are ok too';
let phrase = `can embed ${str}`;
let name = "John";
// embed a variable
alert( `Hello, ${name}!` ); // Hello, John!
// embed an expression
alert( `the result is ${1 + 2}` ); // the result is 3
boolean 類型(邏輯類型)
boolean 類型僅包含兩個值:true
和 false
。
let nameFieldChecked = true; // yes, name field is checked
let ageFieldChecked = false; // no, age field is not checked
“null” 值
特殊的 null
值不屬於上述任何一種類型。
它構成一個獨立的類型,只包含 null
值:
let age = null;
相比較於其他語言,JavaScript 中的 null
不是一個“對不存在對象的引用”或者“null 指針”。
僅僅是一個含義爲“無”、“空”或“值未知”的特殊值。
上面的代碼表示,由於某些原因,age
是未知的。
“undefined” 值
特殊值和 null
一樣,自成類型。
undefined
的含義是 未被賦值
。
如果變量被聲明,而未被賦值,那麼它的值就是 undefined
:
let x;
alert(x); // 彈出 "undefined"
typeof 運算符
typeof
運算符返回參數的類型。當我們想要分別處理不同類型值的時候,或者簡單地進行檢驗,就很有用。
它支持兩種語法形式:
- 作爲運算符:
typeof x
。 - 函數形式:
typeof(x)
。
typeof undefined // "undefined"
typeof 0 // "number"
typeof true // "boolean"
typeof "foo" // "string"
typeof Symbol("id") // "symbol"
typeof Math // "object" (1)
typeof null // "object" (2)
typeof alert // "function" (3)
總結
JavaScript 中有七種基本的數據類型。
number
用於任何類型的數字:整數或者浮點數。string
用於字符串。一個字符串可以包含一個或多個字符,所以沒有單獨的單字符類型。boolean
用於true
和false
。null
用於未知的值 —— 只有一個null
值的獨立類型。undefined
用於未定義的值 —— 只有一個undefined
值的獨立類型。object
用於更復雜的數據結構。symbol
用於唯一的標識符。
typeof
運算符可以查看變量的類型。
- 兩種形式:
typeof x
或者typeof(x)
。 - 返回的類型的字符串,比如
"string"
。 null
返回"object"
—— 這是語言中的一個錯誤,實際上它並不是一個對象。