JavaScript是弱類型語言,弱類型不是沒有類型,而是類型之間能夠自動去轉換,固然你可能會說java數值型也能夠自動轉換,爲何java就是強類型,而js就是弱類型。js能夠不一樣類型之間進行轉換,它的轉換能夠是須要的時候自動轉換或者開發者主動轉換。html
html文檔解析順序是從上到下,JavaScript代碼做爲經過標籤嵌入或引入的腳本,也是HTML文檔的組成部分。所以,JavaScript代碼載入順序根據腳本標籤<script>的出現順序來肯定的。而且瀏覽器在加載js時有個特色,那就是載入以後當即就會執行,js的載入會阻塞DOC的創建。java
固然這也會帶來問題:因爲JavaScript一般須要操做DOM,因此,通常把JavaScript放在</body>前或者文檔結尾處引入。若須要在<head>中引入,能夠經過修改window.onload或者document.ready事件,強制等到DOM加載完成後再執行相關函數。segmentfault
而且JavaScript執行也是有特殊的順序:先處理聲明後執行。好比代碼:瀏覽器
var a = 1;
function aa() {
}複製代碼
會先處理聲明:bash
var a = undefined;函數
var aa = {};spa
執行:code
var a = 1;htm
方法調用時候才執行。對象
關於JS阻塞DOM創建能夠查看文章segmentfault.com/a/119000001…
在JS中一共有六種數據類型:
基本數據類型(值類型):String 字符串、Number 數值、Boolean 布爾值、Null 空值、Undefined 未定義。
引用數據類型(引用類型):Object 對象。
數據類型之間最大的區別:
基本數據類型:參數賦值的時候,傳數值。
引用數據類型:參數賦值的時候,傳地址(修改的同一片內存空間)。
tips:不是數字的數字類型NaN。
null專門用來表示空對象。類型是object。
undefined用來表示一個未定義的變量,類型是undefined。
特殊狀況:
若是字符串中有非數字的內容,則轉換爲NaN;
若是字符串是一個空串或者是一個全是空格的字符串,則轉換爲0;
若是是true 轉成 1,若是是false轉換成0;
若是是null轉換成0;
若是是undefined轉換層NaN;
tips:parseInt(變量)返回整數,還有parseFloat(變量)返回浮動數
若是是字符串轉boolean:除了空字符串,其他的所有轉換成true;
若是是數字轉boolean:除了0和NaN,其他的所有轉換成true;
若是是null轉boolean:轉換成false;
若是是undefined轉boolean:轉換成false;
若是是對象轉boolean;轉換成true;
tips:瀏覽器會根據當前的類型自動去轉換成須要的類型,好比 if(object),他會把他轉換成boolean再去執行,而不是像強類型報錯。
運算符都是會返回結果的。運算符能夠去分類記憶:算數運算符、自增運算符、邏輯運算符、賦值運算符、關係運算符、三元運算符(條件運算符)
非number與數字進行計算時候都會先轉換成數字,在進行運算(任何數和NaN計算結果都是NaN),其他和java同樣。
和java同樣,再也不贅述。
若是對非布爾值進行邏輯運算,則會先將其轉換爲布爾值,而後再操做。其他的和java同樣。
和java同樣,再也不贅述。
若是條件的表達式的求值結果是一個非布爾值,會將其轉換爲布爾值而後再運算,其他的和java同樣。
if語句、switch語句、for語句、while語句語法和java同樣,不在贅述。