以下內容均為個人學習筆記。
JavaScript 用法
HTML 中的腳本必須位于 <script> 與 </script> 標簽之間。
腳本可被放置在 HTML 頁面的 <body> 和 <head> 部分中。
提示:那些老舊的實例可能會在 <script> 標簽中使用 type="text/javascript"?,F(xiàn)在已經不必這樣做了。JavaScript 是所有現(xiàn)代瀏覽器以及 HTML5 中的默認腳本語言。
- 您可以在 HTML 文檔中放入不限數(shù)量的腳本。
- 腳本可位于 HTML 的 <body> 或 <head> 部分中,或者同時存在于兩個部分中。
- 通常的做法是把函數(shù)放入 <head> 部分中,或者放在頁面底部。這樣就可以把它們安置到同一處位置,不會干擾頁面的內容。
提示:我們把 JavaScript 放到了頁面代碼的底部,這樣就可以確保在 <p> 元素創(chuàng)建之后再執(zhí)行腳本。
外部的 JavaScript
也可以把腳本保存到外部文件中。外部文件通常包含被多個網頁使用的代碼。
外部 JavaScript 文件的文件擴展名是 .js。
如需使用外部文件,請在 <script> 標簽的 "src" 屬性中設置該 .js 文件
提示:外部腳本不能包含 <script> 標簽。
JavaScript 輸出
JavaScript 沒有任何打印或者輸出的函數(shù)。
JavaScript 可以通過不同的方式來輸出數(shù)據(jù):
- 使用 window.alert() 彈出警告框。
- 使用 document.write() 方法將內容寫到 HTML 文檔中。
- 使用 innerHTML 寫入到 HTML 元素。
- 使用 console.log() 寫入到瀏覽器的控制臺。
提示:請使用 document.write() 僅僅向文檔輸出寫內容。如果在文檔已完成加載后執(zhí)行 document.write(),整個 HTML 頁面將被覆蓋。
提示:console.log() 方法能夠讓你看到你在頁面中的輸出內容,讓你更容易調試javascript;與alert相比,console不會打斷你頁面的操作,console里面的內容非常豐富,你可以在控制臺輸入 console。
JavaScript 語法
變量是一個名稱。字面量是一個值。
JavaScript 標識符
- JavaScript 標識符必須以字母、下劃線(_)或美元符($)開始。
- 后續(xù)的字符可以是字母、數(shù)字、下劃線或美元符(數(shù)字是不允許作為首字符出現(xiàn)的,以便 JavaScript 可以輕易區(qū)分開標識符和數(shù)字)。
JavaScript 數(shù)據(jù)類型
JavaScript 有多種數(shù)據(jù)類型:數(shù)字,字符串,數(shù)組,對象等等:
var length = 16; // Number 通過數(shù)字字面量賦值
var points = x * 10; // Number 通過表達式字面量賦值
var lastName = "Johnson"; // String 通過字符串字面量賦值
var cars = ["Saab", "Volvo", "BMW"]; // Array 通過數(shù)組字面量賦值
var person = {firstName:"John", lastName:"Doe"}; // Object 通過對象字面量賦值
JavaScript 對大小寫是敏感的。
JavaScript 字符集
JavaScript 使用 Unicode 字符集。
Unicode 覆蓋了所有的字符,包含標點等字符。
提示:JavaScript 中,常見的是駝峰法的命名規(guī)則,如 lastName (而不是lastname)。
提示:JavaScript 是腳本語言。瀏覽器會在讀取代碼時,逐行地執(zhí)行腳本代碼。而對于傳統(tǒng)編程來說,會在執(zhí)行前對所有代碼進行編譯。
JavaScript 語句
瀏覽器按照編寫順序依次執(zhí)行每條語句。
對代碼行進行折行
您可以在文本字符串中使用反斜杠對代碼行進行換行:
document.write("你好 \ W3Cschool!");
不過,您不能像這樣折行:
document.write \ ("你好W3Cschool!");
JavaScript 變量
- 變量必須以字母開頭
- 變量也能以 $ 和 _ 符號開頭(不過我們不推薦這么做)
- 變量名稱對大小寫敏感(y 和 Y 是不同的變量)
提示:JavaScript 語句和 JavaScript 變量都對大小寫敏感。
在計算機程序中,經常會聲明無值的變量。未使用值來聲明的變量,其值實際上是 undefined。
如果重新聲明 JavaScript 變量,該變量的值不會丟失。


JavaScript 數(shù)據(jù)類型
字符串(String)、數(shù)字(Number)、布爾(Boolean)、數(shù)組(Array)、對象(Object)、空(Null)、未定義(Undefined)。
JavaScript 擁有動態(tài)類型
JavaScript 擁有動態(tài)類型。這意味著相同的變量可用作不同的類型:
var x; // x 為 undefined
var x = 5; // 現(xiàn)在 x 為數(shù)字
var x = "John"; // 現(xiàn)在 x 為字符串
JavaScript 數(shù)組
下面的代碼創(chuàng)建名為 cars 的數(shù)組:
var cars = new Array();
cars[0] = "Saab";
cars[1] = "Volvo";
cars[2] = "BMW";
或者 (condensed array):
var cars = new Array("Saab","Volvo","BMW");
JavaScript 對象
對象由花括號分隔。在括號內部,對象的屬性以名稱和值對的形式 (name : value) 來定義。屬性由逗號分隔:
var person = {firstname:"John", lastname:"Doe", id:5566};
Undefined 和 Null
Undefined 這個值表示變量不含有值。
可以通過將變量的值設置為 null 來清空變量。
聲明變量類型
當您聲明新變量時,可以使用關鍵詞 "new" 來聲明其類型:
var carname = new String;
var x = new Number;
var y = new Boolean;
var cars = new Array;
var person = new Object;
提示:JavaScript 變量均為對象。當您聲明一個變量時,就創(chuàng)建了一個新的對象。
提示:JavaScript 具有隱含的全局概念,意味著你不聲明的任何變量都會成為一個全局對象屬性。


JavaScript 作用域
HTML 中的全局變量
在 HTML 中, 全局變量是 window 對象: 所有數(shù)據(jù)變量都屬于 window 對象。
提示:你的全局變量,或者函數(shù),可以覆蓋 window 對象的變量或者函數(shù)。
局部變量,包括 window 對象可以覆蓋全局變量和函數(shù)。
提示:在 ES6 中,提供了 let 關鍵字和 const 關鍵字。
let 的聲明方式與 var 相同,用 let 來代替 var 來聲明變量,就可以把變量限制在當前代碼塊中。
使用 const 聲明的是常量,其值一旦被設定便不可被更改。
JavaScript 字符串
通常, JavaScript 字符串是原始值,可以使用字符創(chuàng)建:var firstName = "John"
但我們也可以使用 new 關鍵字將字符串定義為一個對象:var firstName = new String("John")
提示:不要創(chuàng)建 String 對象。它會拖慢執(zhí)行速度,并可能產生其他副作用。
字符串屬性和方法
- 原始值字符串,如 "John", 沒有屬性和方法(因為他們不是對象)。
- 原始值可以使用 JavaScript 的屬性和方法,因為 JavaScript 在執(zhí)行方法和屬性時可以把原始值當作對象。
JavaScript 運算符
規(guī)則:如果把數(shù)字與字符串相加,結果將成為字符串!
JavaScript 類型轉換
JavaScript 類型轉換
Number() 轉換為數(shù)字, String() 轉換為字符串, Boolean() 轉化為布爾值。
JavaScript 數(shù)據(jù)類型
在 JavaScript 中有 5 種不同的數(shù)據(jù)類型:
- string
- number
- boolean
- object
- function
3 種對象類型:
- Object
- Date
- Array
2 個不包含任何值的數(shù)據(jù)類型:
- null
- undefined
注意:
- NaN 的數(shù)據(jù)類型是 number
- 數(shù)組(Array)的數(shù)據(jù)類型是 object
- 日期(Date)的數(shù)據(jù)類型為 object
- null 的數(shù)據(jù)類型是 object
- 未定義變量的數(shù)據(jù)類型為 undefined
如果對象是 JavaScript Array 或 JavaScript Date ,我們就無法通過 typeof 來判斷他們的類型,因為都是 返回 Object。
JavaScript 閉包
var add = (function () {
var counter = 0;
return function () {return counter += 1;}
})();
add();
add();
add();
// 計數(shù)器為 3
提示:閉包是可訪問上一層函數(shù)作用域里變量的函數(shù),即便上一層函數(shù)已經關閉。
JavaScript Boolean 對象
如果布爾對象無初始值或者其值為:
- 0
- -0
- null
- ""
- false
- undefined
- NaN
那么對象的值為 false。否則,其值為 true(即使當自變量為字符串 "false" 時)!