01語法

基本類型

  1. 變量二次聲明無意義,除非在第二次聲明的時候,也賦值
  2. 有一些保留字
  • javascript保留字
  • 使用保留字報錯類型:Uncaught SyntaxError: Unexpected token finally
  1. while只有一條語句的時候可省略大括號
  2. 循環(huán)標(biāo)簽使用方式
  • 在需要跳出的for循環(huán)層添加label
  • continuebreak后添加同名label

數(shù)據(jù)類型

  1. String,Number,Boolean,Undefined,Null,Object
  2. 使用typeof后有string,number,boolean,undefined,object,function
  • 注意和數(shù)據(jù)類型相比,少了null多了function
  • 結(jié)果都是小寫
  1. undefinednull使用==相等。計算時,undefinedNaN,null是0
  2. 返回布爾值的地方
  • 關(guān)系運算符
  • &&,||,!
  1. 轉(zhuǎn)化為false的情況
  • '',0,NaN,undefined,null,false
  1. if后需要布爾類型,[]{}其實是true

數(shù)值

  1. Number.MAX_VALUENumber.MIN_VALUE
  2. 科學(xué)記數(shù)法
  • 當(dāng)小數(shù)點前有21位,還是正常顯示。有22位,開始科學(xué)計數(shù)
  • 當(dāng)小數(shù)點后有5位0,正常顯示。有6位0,開始科學(xué)計數(shù)
  1. 各進制前綴,0x十六,0o八,0b
  2. NaN和isNaN()
  3. Infinity和isInfinity()
  4. parseInt()第二個參數(shù)說明了數(shù)據(jù)是什么進制。同時,只能轉(zhuǎn)化為十進制

字符串

  1. 長字符換行,每行后用\
  2. 轉(zhuǎn)義字符
  • 可有轉(zhuǎn)移符號\n,\r,\t,\\
  • 可有轉(zhuǎn)移字符,都對應(yīng)unicode碼點
    • \HHH三位八進制
    • \xHH兩位十六進制
    • \uHHHH四位十六進制
  1. bit,Byte,KBMB,GB,TB
  • 存儲單位和網(wǎng)速的單位,不管是 B 還是 b,代表的都是 字節(jié) Byte。
  • 帶寬的單位,不管是 B 還是 b,代表的都是 比特 bit 。
  1. Base64是最常見的用于傳輸(8Bit)字節(jié)碼的編碼方式
  2. ASCII 是針對英文字符編碼的方式
  3. Unicode 是針對多種語言進行編碼的方式
  • 為了解決Unicode編碼在互聯(lián)網(wǎng)上傳播的問題,各種規(guī)范出現(xiàn)utf-8,代表每次8個位傳輸數(shù)據(jù)
  1. GBK本來擴展自ASCII,后漸漸形成GBK。因為還有很多少數(shù)名族的語言

對象

  1. 創(chuàng)建對象
  • {}
  • new Object
  • Object.create(prototype),這種可以利用原型創(chuàng)造一個新的對象,經(jīng)常用在繼承
  1. 對象引用
  • 兩個變量對引用同一個對象,則共用
  • 其中一個取消對對象的引用,不會影響另外一個
var a = {}
var b = a
a = 1
console.log(b)  // {}
  1. 檢測全局變量,使用a in window方式,如果直接使用if(a)在沒有a的情況下會報錯
  2. delete成功刪除之后返回true,不能刪除繼承的屬性
  3. in用于檢測對象是否含有某個屬性,也就是鍵名
  4. for in遍歷對象和繼承的可遍歷屬性,跳過不可枚舉屬性
  5. 關(guān)于屬性的兩個方法
  • Object.defineProperty(obj,propName,{})
  • obj.hasOwnProperty()

數(shù)組

  1. 其實arr[0]等同與arr['0']arr[0.00]
  2. 類數(shù)組對象
  • arguments
  • 元素集合
  • 字符串
  1. 類數(shù)組轉(zhuǎn)化成數(shù)組
  • Array.property.slice.call(arrayLike)
  1. 數(shù)組也能使用in,會將索引和屬性遍歷出來
  2. 數(shù)組空位計算在內(nèi),但是空位和undefined是不一樣的。使用數(shù)組的forEach方法、for...in結(jié)構(gòu)、以及Object.keys方法進行遍歷,空位都會被跳過

函數(shù)

  1. 不會重載,后邊的會覆蓋前邊的同名函數(shù)
  2. if語句塊中只能使用函數(shù)表達(dá)式,不能使用函數(shù)定義
  3. fn.name屬性返回緊跟在function關(guān)鍵字之后的那個函數(shù)名
  4. fn.name返回定義時參數(shù)個數(shù)
  5. fn.toString()返回函數(shù)的源碼
  6. 函數(shù)的作用域是定義時所在的作用域,和運行時作用域無關(guān)
var a = 1;
var x = function () {
  console.log(a);
};
function f() {
  var a = 2;
  x();
}

f() // 1
  1. 當(dāng)函數(shù)傳入對象作為參數(shù)的時候
  • 如果修改對象某個屬性,將對外部存在影響
  • 如果是替換掉整個參數(shù),不會影響到外部
  1. 同名參數(shù),取后出現(xiàn)的值。即使只傳入第一個,但是也會取后者undefined
  2. arguments.callee返回函數(shù)本身
  3. 閉包作用
  • 讀取函數(shù)內(nèi)部的變量
  • 讓變量始終保存在內(nèi)存中,保存上次運行的狀態(tài)
  1. 函數(shù)的立即調(diào)用有兩種寫法
  2. eval在嚴(yán)格模式下,聲明變量不能影響外部變量。但是賦值語句等還是可以改變外部變量值

運算符

  1. 字符串的比較是按照字典的順序,靠后的大
// 嚴(yán)重注意,字符串形式的數(shù)值比較
'2' > '11'  // true
[2] > [11] // true,因為會轉(zhuǎn)換成 '2' > '11'
  1. 對象參與比較,會調(diào)用obj.valueOf().toString()
  2. 進制不同,但是轉(zhuǎn)化為10進制相同,就全等
  3. 嚴(yán)格相等運算符比較的是地址,而大于或小于運算符比較的是值。
{} === {} // false
[] === [] // false
  1. 原始數(shù)據(jù)類型有string,number,boolean。它們混合比較的時候,會轉(zhuǎn)換成數(shù)值類型再進行比較
'true' == true //false 
// 第一步 Number('true') ---> NaN
// 第二部 Number(true) ---> 1
// NaN == 1 ---> 結(jié)果為false
  1. 對象與原始類型值比較,對象轉(zhuǎn)化成原始類型的值,再進行比較。
[1] == 1 // true
[1] == '1' // true
[1] == true // true
  1. 邏輯運算符和位運算符,位運算符可以用來擴大或縮小2的n次方
  2. void用來防止頁面跳轉(zhuǎn)
  3. 賦值運算符和三元運算符,是從右到左的

數(shù)據(jù)類型轉(zhuǎn)換

  1. 主要是String,Boolean,Number之間的轉(zhuǎn)換

錯誤處理機制

  1. Error的namestack屬性存在兼容問題,后者可以顯示錯誤首先是在哪里拋出的
  2. 錯誤類型和出現(xiàn)原因
  • synaxError 語法錯誤
  • referenceError 引用錯誤
    • 調(diào)用不存在的值
    • 不允許賦值
  • typeError 類型錯誤
    • 由 new 引起,不能對基本類型使用 new
  • URIError url參數(shù)不正確的時引起
    • 主要由編碼的幾種方法引起
  • evalError 使用錯誤
  • rangeError
  1. catch中的return語句會延遲到finally中執(zhí)行

編程風(fēng)格

  1. 關(guān)于()和空格的問題
  • 定義非匿名函數(shù)和調(diào)用函數(shù),函數(shù)名和()不能有空格
  • 其他情況,都有一個空格
  1. 全局變量可以使用大寫區(qū)分
  2. 建議不要將目的不同的語句合并成一行、
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 第5章 引用類型(返回首頁) 本章內(nèi)容 使用對象 創(chuàng)建并操作數(shù)組 理解基本的JavaScript類型 使用基本類型...
    大學(xué)一百閱讀 3,690評論 0 4
  • 標(biāo)簽: 我的筆記 ---學(xué)習(xí)資料:http://javascript.ruanyifeng.com/ 1. 導(dǎo)論 ...
    暗夜的怒吼閱讀 950評論 0 1
  • FreeCodeCamp - Basic JavaScript 寫在前面: 我曾經(jīng)在進谷前刷過這一套題,不過當(dāng)時只...
    付林恒閱讀 16,586評論 5 28
  • 然而也知道原因。晚安,雖然你眼睛不夠大,腿不夠長,能力不夠強,可我會一直愛你。即使全世界都拋棄你,我也會永...
    九月的少年夢閱讀 197評論 0 0
  • 先生親述: 習(xí)武,乃文人貴事智勇順成貴和之術(shù),非常人所能為。 形意拳,歷史悠久,源遠(yuǎn)流長,它受我們祖先傳統(tǒng)的哲學(xué)思...
    295442de7134閱讀 491評論 0 0

友情鏈接更多精彩內(nèi)容