javascript基礎知識大全

大多數人覺得學習JavaScript是一件容易的事情,其實也並沒有錯,js的確是一個容易上手的語言。這就導致很多人都會用JavaScript,但卻很少有人能用的很精通的原因,因爲他們大小看js這門語言的基礎和內在了,基礎,無論何時都是一個重要的存在,最直接的就是在你面試的時候,如果連js的數據類型都答不上來那是不是就太過分了…… 接下來,就讓我們一起總結一下JavaScript的基礎。

javascript基礎知識大全

  一、語法

------------------------------

javascript中的一切(變量、函數名和操作符)都區分大小寫。

標識符:就是指變量、函數、屬性的名字,標識符要求如下

1 第一個字符必須是一個字母、下劃線(_)或一個美元符號($)

2 其他字符可以是字母、下劃線、美元符號或數字

3 不能把關鍵字、保留字、true、false、null用作標識符

註釋

// 單行註釋

/*

*

* 多行註釋

*

*/

嚴格模式

嚴格模式是ES5引入的,嚴格模式定義一種不同的解析和執行模式,在嚴格模式下,對某些不安全的操作會跑出錯誤

// 在整個腳本中啓用嚴格模式,可以在頂部添加如下代碼

"use strict"

// 也可以指定函數在嚴格模式下執行

function doSomething(){

"use strict"

// ....

}

  二、變量和數據類型

------------------------------

變量

1、ESCMscript中的變量是鬆散類型的,即JavaScript使弱類型語言,換句話說js中的變量僅僅是一個保存值得佔位符而已,可以保存任何類型的值。

2、定義變量用 var 操作符。

3、使用var操作符定義的變量將成爲定義該變量的作用域中的局部變量。

4、在函數作用域(塊作用域)中可以通過省略var定義全局變量(不推薦)。

數據類型

1、js中有5中基本數據類型和1中複雜數據類型他們分別是

Undefined、Null、Boolean、Number、String和Object

2、typeof操作符用來檢測變量的數據類型,對一個值使用typeof操作符會返回字一個 字符串 ,標示着該值得類型:

“undefined” —- 如果這個值未定義

“boolean” —- 如果這個值是布爾值

“string” —- 如果這個值是字符串

“number” —- 如果這個值是數值

“object” —- 如果這個值是對象或null

“function” —- 如果這個值是函數

3、js的6中數據類型與使用typeof判斷出來的數據類型並不對應,區別就在於使用typeof得到的類型標示中沒有”null”,而是多了一個”function”,其他的都是一樣的,還要注意的就是對null是用typeof時會返回”object”,並且typeof操作符得到的是字符串。

  三、語句

------------------------------

if語句

語法:

if(條件){

}else if(條件){

}else{

}

解釋:

其中,條件可以是任意表達式,而且對這個表達式的求值結果不一定非得是Boolean值,ES會自動調用Boolean()轉換函數將這個表達式的結果轉換成一個布爾值。

while語句

語法:

while(條件){

something...

}

解釋:

其中條件同if語句中的條件,while語句是前測試循環語句,即在執行循環體之前就要對條件表達式求值,所以循環體有可能永遠不會執行。

do-while語句

語法:

do{

something...

}while(條件)

解釋:

其中條件同if語句中的條件,do-while語句是後測試循環語句,即在對條件表達式求值之前,循環體中的代碼至少被執行一次。有趣的記法就是(while是先問再揍,do-while是揍完再問)。

for語句

語法:

for(初始化代碼, 條件, 執行循環體後要執行的代碼){

something...

}

解釋:

for語句也是一種前測試循環語句,所以循環體也有可能永遠不會執行,for語句和while語句的區別就是,在執行循環之前初始化變量和定義循環後要執行的代碼的能力。

for-in語句

語法:

for(property in expression){

something...

}

解釋:

for-in語句是一種精準的迭代語句,用來枚舉對象的屬性,需要注意的是,for-in語句輸出的屬性名的順序是不可測的`,因瀏覽器而異。

switch語句

語法:

switch(表達式){

case value :

statement

break;

case value :

statement

break;

case value :

statement

break;

default :

statement

}

解釋:

switch語句是與if語句最密切的流程控制語句,JavaScript中的switch語句有很多自己的特色,首先:可以在switch語句中使用任何數據類型,其次:每個case的值(即value),不僅僅只能是常量,也可以是變量甚至表達式。

label語句

語法:

label : statement

// 實例

start : for(var i = 0; i < count; i++){

alert(i)

}

解釋:

使用label語句可以在代碼中添加標籤,以便將來使用,上面例子中的start標籤可以在將來由break或continue語句引用,使代碼跳至標籤開始出執行,一般label語句都要與for語句等循環語句中的break或continue配合只用。

break和continue語句

語法:

// 例子

mylabel :

for(var i = 0; i < 10; i++){

for(var j = 0; j < 10; j++){

if(i == 5 && j == 5){

break mylabel;

// continue mylabel;

}

}

}

解釋:

break和continue語句都是用來跳出循環的語句,不同之處在於break語句會強制執行後面的語句,而continue語句只是跳出本次循環繼續執行下次循環。上面的例子中,結合使用break語句和label語句,控制代碼的執行。

with語句

解釋:

with語句的作用是將代碼的作用域設置到特定的對象中。嚴格模式下使用with語句會報錯。定義with語句的目的是簡化同一個對象的多次編寫問題,如下例:

var qs = tring(1);

var hostName name;

var url = ;

// 上面的代碼中都包含location對象,使用with語句可以將代碼簡化如下

with(location){

var qs = tring(1);

var hostName = hostname;

var url = href;

}

  四、函數

------------------------------

JavaScript中的函數使用function關鍵字來聲明

function(arg0, arg1, arg2, ..., argn){

statements

}

理解參數

JavaScript中的參數有一下特點:

不介意你傳遞幾個參數,即使你在定義函數時規定了接收幾個參數,它都不會報錯。

不在乎你傳遞的參數是什麼數據類型。

之所以會這樣,是因爲JavaScript函數內部的參數使用一個類數組對象來表示的,所以函數接收到的始終都是這個類數組對象,而不關心這個對象裏面有什麼參數,在函數體內可以是用arguments對象來訪問這個類數組對象,可以使用方括號的語法如:arguments[0]、arguments[1]等,這個事實說明一個重要的特點:

命名參數並不是必須的,它只是提供了便利而已。

通過arguments的length屬性獲知有多少個參數傳遞給了函數:

function howManyArgs(){

alert(th);

}

howManyArgs("string", 1); // 2

howManyArgs(); // 0

howManyArgs(1); // 1

關於arguments有一點比較有意思,就是它的值永遠與對應的形式參數同步,即修改了arguments[0]的值會使對應的命名參數的值也發生相應的改變。但是這並不是說他們訪問的是相同的內存空間,他們有獨立的存儲空間,只不過值會同步而已,另外如果值傳遞一個參數,修改arguments[1]的值是不會改變對應的命名參數的值的,這是應爲,th的長度是由傳遞參數個數決定的,而不是命名參數的個數決定的,在這裏再次強調一次, 命名參數只是提供了便利而已,沒有任何其他作用 。

沒有重載

由於JavaScript中的函數沒有函數簽名的特徵,所以沒有重載,不過可以通過檢查傳入函數的參數的類型和數量作出不同的反應來模擬重載。