觀阮一峰老師js教程筆記

1. js中并不是所有值都是對象
  • 基本數據類型不是對象,沒有方法和屬性
    ??方法:是某個特定對象才能調用的函數
    ??屬性:是隸屬于某個特定對象的變量
    ??對象:是一種字包含的數據類型
2. JavaScript與ECMAScript的關系
  • ECMAScript和JavaScript的關系是,前者是后者的規(guī)格,后者是前者的一種實現。在日常場合,這兩個詞是可以互換的。
2.1基本語法
  • 變量提升:就是所有的變量的聲明語句,都會被提升到代碼的頭部
  • for循環(huán)和while循環(huán)相同
  • 三元運算符(條件) ? 表達式1 : 表達式2可視為if...else的簡寫
  • do...while循環(huán)不管條件是否為true至少執(zhí)行一次
  • continue語句用于立即終止本輪循環(huán),返回循環(huán)結構的頭部,開始下一輪循環(huán)
  • break用于直接跳出循環(huán)或代碼塊
2.2數據類型
  • typeof null返回object
  • if語句中undefinednull都會轉為false
  • null是一個表示“空”的對象,轉為數值時為0;
  • undefined是一個表示”此處無定義”的原始值,轉為數值時為NaN。
  • 轉換規(guī)則是除了下面六個值被轉為false,其他值都視為true。
    undefined
    null
    false
    0
    NaN
    "或''(空字符串)
2.3數值
  • js中所有數字都是64位雙精度浮點數
  1. 第1位:符號位,0表示正數,1表示負數
  2. 第2位到第12位(共11位):指數部分
  3. 第13位到第64位(共52位):小數部分(即有效數字)
  • 絕對值小于等于2的53次方的整數,即2-53到253,都可以精確表示。
  • 數值的進制

十進制:沒有前導0的數值。
八進制:有前綴0o或0O的數值,或者有前導0、且只用到0-7的八個阿拉伯數字的數值。
十六進制:有前綴0x或0X的數值。
二進制:有前綴0b或0B的數值。

  • parseInt方法用于將字符串轉為整數。
  1. 如果parseInt的參數不是字符串,則會先轉為字符串再轉換。
  2. 字符串轉為整數的時候,是一個個字符依次轉換,如果遇到不能轉為數字的字符,就不再進行下去,返回已經轉好的部分。
    3.如果以0x開頭會照16進制解析
    4如果以0開頭會以10進制解析
  3. parseInt方法還可以接受第二個參數(2到36之間),表示被解析的值的進制
  4. 如果第一個參數不是字符串,"0x11"寫成0x11則會先轉換為10進制,在進行第二個參數的轉換
    -isNaN()
  • isNaN()可以用來判斷一個值是否為NaN。
  • isNaN只對數值有效,如果傳入其他值,會被先轉成數值。相當于isNaN(Number('xxx'))
2.4字符串
  1. 字符串只能寫在一行內,如果要分成多行,每一行末尾加上\和換行符
  2. 反斜杠(\)在字符串內有特殊含義,用來表示一些特殊字符,所以又稱為轉義符。
  3. 字符串可視為字符數組可以使用[]運算符返回某個位置的字符
    反斜杠\有3種特殊的用法:
  • \HHH
    反斜杠后面緊跟三個八進制數(000到377),代表一個字符。HHH對應該字符的 Unicode 碼點,比如\251表示版權符號。顯然,這種方法只能輸出256種字符。
  • \xHH
    \x后面緊跟兩個十六進制數(00到FF),代表一個字符。HH對應該字符的 Unicode 碼點,比如\xA9表示版權符號。這種方法也只能輸出256種字符。
  • \uXXXX
    \u后面緊跟四個十六進制數(0000到FFFF),代表一個字符。HHHH對應該字符的 Unicode 碼點,比如\u00A9表示版權符號。
  1. 字符集
  • 每個字符在javascript中都以16位(2個字節(jié))的utf-16格式儲存
  • JavaScript 使用 Unicode 字符集。JavaScript 引擎內部,所有字符都用 Unicode 表示。
  • 由于歷史原因,對于碼點在U+10000到U+10FFFF之間的字符,JavaScript 總是認為它們是兩個字符
  1. Base64 轉碼
  • 文本有不可打印的符號可以使用base64轉碼
  • btoa():任意值轉為 Base64 編碼
    atob():Base64 編碼轉為原來的值
  • 必須是ASCII 碼的字符
2.5對象
  • 對象就是hash,就是一組“鍵值對”(key-value)的集合,是一種無序的復合數據集合。
  • 對象中所有的key(鍵名)的都是字符串,如果是數值會自動轉換為字符串
  • 如果key不符合標識符的條件,(比如第一個字符為數字,或者含有空格或運算符且也不是數字),必須加上引號
  • key也叫屬性,如果value為函數,那么通常把這個屬性稱為“方法”,如果屬性的值還是一個對象,就形成了鏈式引用。
  • 如果只采用大括號。JavaScript 規(guī)定,如果行首是大括號,一律解釋為語句(即代碼塊),如果想表達對象則要咋在外加上圓括號({a:123})
  • 讀取屬性obj.p或者obj['p'] 如果不加引號則指向一個變量
  • 查看對象的所有屬性Object.keys
    -delete命令可以刪除對象的屬性,刪除不存在的屬性也會返回true,不能刪除繼承的屬性
  • in運算符檢查某個對象是否包含某個屬性(key) (不能識別是否為繼承的,都會返回true)
  • for(...in...){}用于遍歷對象的全部屬性
  • with 語句用來批量操作同一個對象的多個屬性(如果with區(qū)塊內部有變量的賦值操作,必須是當前對象已經存在的屬性,否則會生成一個全局變量)
2.6數組
  • 數組其實是固定key的對象(hash),key['0'],['1'],['2'].['3'],['4']...都是字符串
  • 數組的length是其中最大key+1,不是其中的個數
  • 當數組的某個元素是空元素,即2個逗號之間沒有任何值,我們稱改數組存在空位
  • 空位不會影響length屬性,空位是可讀取的,返回undefined,delete命令刪除某個屬性,這個位置就形成了空位
  • 空位就是數組沒有這個元素,所以不會被遍歷到,而undefined則表示數組有這個元素,值是undefined,所以遍歷不會跳過。
  • 類似數組的對象,特征是具有l(wèi)enght屬性,length不是動態(tài)的
  • 可以使用var arr = Array.prototype.slice.call(arrayLike)把對象變成真正的數組
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容