JavaScript基礎知識

1 什麼是JavaScript

JavaScript一種直譯式腳本語言,一種基於對象和事件驅動並具有安全性的客戶端腳本語言;也是一種廣泛應用客戶端web開發的腳本語言。簡單地說,JavaScript是一種運行在瀏覽器中的解釋型的編程語言。

2 JavaScript的基本結構

<script type="text/javascript">
    JS語句;
</script>

3 JS的使用方法

1 HTML標籤中內嵌JS;
  <button onclick="alert('歡迎進入JavaScript世界')">點擊me</button>
2 HTML頁面中直接使用JS:
  <script type="text/javascript">
    JS語句;
  </script>
3 引用外部JS文件:
  <script language="JScript" src="JS文件路徑"></script>

4 變量

變量:是用於存儲信息的"容器",是命名的內存空間,可以使用變量名稱找到該內存空間;JavaScript 的變量是鬆散類型(弱類型)的,就是用來保存任何類型的數據。在定義變量的時候不需要指定變量的數據類型。
JavaScript 定義變量有四種方法:const、let、var,還有一種是直接賦值,比如a = " a"(不規範,不推薦使用)
var 定義的變量可以修改,如果不初始化會輸出undefined,不會報錯。
let let是塊級作用域,定義的變量只在let 命令所在的代碼塊內有效,變量需要先聲明再使用。
const 定義的變量不可以修改,而且必須初始化,const定義的是一個恆定的常量,聲明一個只讀的常量或多個,一旦聲明,常量值就不能改變。

在函數外聲明的變量作用域是全局的,全局變量在 JavaScript 程序的任何地方都可以訪問;在函數內聲明的變量作用域是局部的(函數內),函數內使用 var 聲明的變量只能在函數內容訪問。

聲明變量注意:
1 JS中所有變量類型聲明,均使用var關鍵字。變量的具體數據類型,取決於給變量賦值的執行。
2 同一變量可在多次不同賦值時,修改變量的數據類型。
3 變量的命名規範
4 變量命名名要符合駝峯法則:變量開頭爲小寫,之後每個單詞首字母大寫。

5 JavaScript 變量的命名規則

1 變量命名必須以字母、下劃線”_”或者”$”爲開頭。其他字符可以是字母、_、美元符號或數字。
2 變量名中不允許使用空格和其他標點符號,首個字不能爲數字。
3 變量名長度不能超過255個字符。
4 變量名稱對大小寫敏感(y 和 Y 是不同的變量),JavaScript 語句和 JavaScript 變量都 對大小寫敏感。
5 變量名必須放在同一行中。
6 不能使用腳本語言中保留的關鍵字、保留字、true、false 和 null 作爲標識符。

6 JS中的變量的數據類型

String:字符串類型。用""和''包裹的內容,稱爲字符串。
Number:數值類型。可以是小數,也可以是正數。
boolean:真假,可選值true/false。
Object(複雜數據類型)
Null:表示爲空的引用。var a = null;
Undefined:未定義,用var聲明的變量,沒有進行初始化賦值。var a;

7 JavaScript對象

JavaScript 對象是擁有屬性和方法的數據,是變量的容器。
對象:是封裝一個事物的屬性和功能的程序結構,是內存中保存多個屬性和方法的一塊存儲空間。
JavaScript中所有事物都是對象:數字、字符串、日期、數組等。
JavaScript對象可以是字面量創建、分配給變量,數組和其他對象的屬性、作爲參數傳遞給函數、有屬性和作爲返回值。
用字面量創建:
    function MyFun(){};
分配給其他對象的變量,數組和屬性:
    var myFun = function(){};
    myArray.push(function(){});
    myObject.myFun = function(){};
作爲參數傳遞給其他函數:
    function myFun(someFunc){
        someFunc();
    }
    myFunc(function(){});
有屬性:
    var myFunc = function(){};
作爲返回值:
    function myFunc(){ return function(){};}

在JavaScript中定義對象有5種方式:
  1.基於已有對象擴充其屬性和方法
  2.工廠方式
  3.構造函數方式
  4.原型(“prototype”)方式
  5.動態原型方式
JS 中的對象分爲三類:
    內置對象(靜態對象):js本身已經寫好的對象,我們可以直接使用不需要定義它。
    常見的內置對象有 Global、Math(它們也是本地對象,根據定義每個內置對象都是本地對象)。
    本地對象(非靜態對象):必須實例化才能使用其方法和屬性的就是本地對象。
    常見的本地對象有 Object、Function、Data、Array、String、Boolean、Number、RegExp、Error等
    宿主對象:js運行和存活的地方,它的生活環境就是DOM(文檔對象模式)和BOM(瀏覽器對象模式)。

8 JavaScript函數

使用函數前要先定義才能調用,函數的定義分爲三部分:函數名,參數列表,函數體
定義函數的格式:
function 函數名([參數1,參數2...]){
    函數執行部分;
    return 表達式;
}
函數有三種定義方法:
    1 函數定義語句
    2 函數直接量表達式
    3 Function構造函數
函數有四種調用模式:
    1 函數調用模式(通過函數調用)
    2 方法調用模式(通過對象屬性調用)
    3構造函數模式(如果是作爲構造函數來調用,那麼this指向new創建的新對象)
    4 函數上下文(借用方法模式:它的this指向可以改變,而前三種模式是固定的);函數上下文就是函數作用域;基本語法:apply 和 call 後面都是跟兩個參數。)
    
在javascript函數中,函數的參數一共有兩種形式:(實際參數與形式參數)
形參:在函數定義時所指定的參數就稱之爲“函數的形參”。
實參:在函數調用時所指定的參數就稱之爲“函數的實參”。

9 運算符

算術運算符:主要是用來進行JavaScript中的算術操作。(+、-、*、/、%、++、--)
賦值運算符: = 用於給JavaScript 變量賦值,其作用就是把右側的值賦給左側的變量。
關係運算符:用於進行比較的運算符。主要有小於(<)、大於(>)、等於(==)、大於等於(>=)、小於等於(<=)、不等(!=)、恆等(===)、不恆等(!==)。
邏輯運算符:邏輯運算符通常用於布爾值的操作,返回結果是一個布爾類型,一般和關係運算符配合使用,有三個邏輯運算符:邏輯與(AND)、邏輯或(OR)、邏輯非(NOT)。
字符串連接運算符:是用於兩個字符串型數據之間的運算符,它的作用是將兩個字符串連接起來。在JavaScript中,可以使用+和+=運算符對兩個字符串進行連接運算。
三目操作符(條件運算符):? 根據不同的條件,執行不同的操作/返回不同的值。

10 JavaScript條件語句

分爲四種條件語句:
If 語句:只有當指定條件爲true時,使用該語句來執行代碼
if-else 語句:當條件爲true時執行代碼,當條件爲false時執行其他代碼
if-else if-else 語句:使用該語句來選擇多個代碼塊之一來執行
switch 語句:同上,switch的工作原理呢?首先設置表達式n(通常是一個變量),隨後表達式的值會與結構中的每個case值作比較;如果存在匹配則該關聯代碼塊執行;然後使用break來阻止代碼自動的向下一個case運行;default關鍵詞來規定匹配不存在時做的事情。

11 JavaScript 不同類型的循環

常見的循環主要是三種:for 循環、while 循環、do/while 循環。
for 循環:代碼塊有一定的次數。for 有三個表達式:1 聲明循環變量  2 判斷循環條件  3 更新循環變量
特點:先判斷再執行,與while相同。
while 循環:當指定的條件爲true時循環指定的代碼塊
do/while 循環:同while循環一樣。
特點:先執行再判斷,即使初始條件不成立,do/while循環至少執行一次。

循環結構的執行步驟:
1 聲明變量
2 判斷循環條件
3 執行循環體操作
4 更新循環變量
5 最後執行循環2-4,直到條件不成立,跳出循環

12 JavaScript Break 和Continue 語句

break:跳出本層循環,繼續執行循環後面的語句。
    如果循環有多層,則break只能跳出一層。
continue:跳過本次循環剩餘的代碼,繼續執行下一次循環。
    對與for循環,continue之後執行的語句,是循環變量更新語句i++;
    對於while、do-while循環,continue之後執行的語句,是循環條件判斷;
    因此,使用這兩個循環時,必須將continue放到i++之後使用,否則,continue將跳過i++進入死循環。

13 JavaScript 錯誤處理使用 try ... catch ... finally

一種是程序寫的邏輯不對,導致代碼執行異常;一種是執行過程中,程序可能遇到無法預測的異常情況而報錯。
throw 聲明
onerror 事件

14 JS 對象

JavaScript中所有事物都是對象:數字、字符串、日期、數組等
在 JavaScript 中,對象是擁有屬性和方法的數據。
在JavaScript中定義對象可以採用以下幾種方式:
  1.基於已有對象擴充其屬性和方法
  2.工廠方式
  3.構造函數方式
  4.原型(“prototype”)方式
  5.動態原型方式
JS 中的對象分爲三類:
    內置對象(靜態對象):js本身已經寫好的對象,我們可以直接使用不需要定義它。常見的內置對象有 Global、Math(它們也是本地對象,根據定義每個內置對象都是本地對象)。
    本地對象(非靜態對象):必須實例化才能使用其方法和屬性的就是本地對象。常見的本地對象有 Object、Function、Data、Array、String、Boolean、Number、RegExp、Error等
    宿主對象:js運行和存活的地方,它的生活環境就是DOM(文檔對象模式)和BOM(瀏覽器對象模式)。

15 JavaScript 框架(庫)

1、jQuery 庫
   jQuery 函數是 $() 函數(jQuery 函數)。
   jQuery 庫包含以下功能:
   HTML 元素選取、元素操作、CSS 操作、HTML 事件函數、JavaScript 特效和動畫、HTML DOM 遍歷和修改、AJAX、Utilities
   面向對象編程包括 創建對象、原型繼承、class繼承。
   類是對象的類型模板;實例是根據類創建的對象。
   jQuery 優點:
        分佈規模小
        學習曲線平緩,在線幫助多
        語法簡潔
        容易延伸
   缺點:
        增加了本機API的速度開銷
        瀏覽器兼容性的改善降低了它的性能
        用法扁平
        有些開發人員抵制使用
   jQuery的好處:消除了瀏覽器差異;簡潔的操作DOM的方法;輕鬆實現動畫、修改CSS等各種操作。

2、AngularJs企業級框架 
其最爲核心的特性爲:MVC、模塊化、自動化雙向數據綁定、語義化標籤及依賴注入等。

3、React框架
React被稱爲構建用戶接口而提供的Javascript庫;主要用來構建UI,其專注於MVC的V部分。

4、vue未來的主流
vue.js 是用來構建web應用接口的一個庫,技術上,Vue.js 重點集中在MVVM模式的ViewModel層,它連接視圖和數據綁定模型通過兩種方式。

5、Require Js 
RequireJs是一個javascript模塊加載器,提高網頁的加載速度和質量。

6、Backone框架 
Backone是一個幫助開發重量級Javascript應用的框架,但它本身簡單的框架。其文件體積很小,壓縮後只有5.3KB,提供了全功能的MVC框架及路由。Backone強制依賴於Underscore.js,非強制依賴於jQuery/Zepto。

7、D3.js 
數據可視化和圖表是Web應用中不可或缺的一部分。d3.js就是最流行的可視化庫之一,它允許綁定任意數據到DOM,然後將數據驅動轉換應用到Document中。

16 JavaScript this

方法中的this指向調用它所在方法的對象。
單獨使用this,指向全局對象。
函數中,函數所屬者默認綁定到this上。

this使用場合:
1 全局環境
2 構造函數
3 對象的方法
4 Node

17 JavaScript閉包

閉包是指有權訪問另一個函數作用域中的變量的函數。
創建閉包就是創建了一個不銷燬的作用域。
閉包需要了解的幾個概念: 作用域鏈、執行上下文、變量對象。
閉包的好處有:
    緩存
    面向對象中的對象
    實現封裝,防止變量跑到外層作用域中,發生命名衝突
    匿名自執行函數,匿名自執行函數可以減少內存消耗
壞處:
    內存消耗
    涉及到跨作用域訪問是時會導致性能耗損

18 JS Window

所有瀏覽器都支持 window 對象。它表示瀏覽器窗口。
所有 JavaScript 全局對象、函數以及變量均自動成爲 window 對象的成員。
全局變量是 window 對象的屬性。
全局函數是 window 對象的方法。

19 JavaScript JSON

JSON 是一種輕量級的數據交換格式;JSON是獨立的語言 ;JSON 易於理解。
語法規則:
數據爲 鍵/值 對。
數據由逗號分隔。
大括號保存對象。
方括號保存數組。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章