【Mark】JavaScript

點擊目錄傳送ฅʕ•̫͡•ʔฅ

JavaScript簡介

  • JavaScript是世界上最流行的腳本語言
  • 在Web世界裏,目前只有JavaScript能跨平臺、跨瀏覽器驅動網頁,與用戶交互。
  • 由於網景公司希望能在靜態HTML頁面上添加一些動態效果,於是叫Brendan Eich這哥們在兩週之內設計出了JavaScript語言。你沒看錯,這哥們只用了10天時間。
  • 事實上JavaScript除了語法上有點像Java,其他部分基本上沒啥關係。
  • ECMAScript是一種語言標準,而JavaScript是網景公司對ECMAScript標準的一種實現,是網景的註冊商標。
  • 如果你遇到ECMAScript這個詞,簡單把它替換爲JavaScript就行了。

快速入門

  • JavaScript的數據類型
    • Number(不區分整型和浮點數)
    • 字符串""''
    • 布爾值!是將true變成false的運算符)
    • 比較運算符,第一種是==比較,它會自動轉換數據類型再比較;
      第二種是===比較,它不會自動轉換數據類型,數據類型不一致,返回false,一致,再比較。
      不要使用==比較,始終堅持使用===比較。
      NaN這個特殊的Number與所有其他值都不相等,包括它自己
      唯一能判斷NaN的方法是通過isNaN()函數
      浮點數在運算過程中會產生誤差,因爲計算機無法精確表示無限循環小數。要比較兩個浮點數是否相等,只能計算它們之差的絕對值,看是否小於某個閾值,這不是JavaScript的設計缺陷
    • nullundefined,JavaScript的設計者希望用null表示一個空的值,而undefined表示值未定義。事實證明,這並沒有什麼卵用,區分兩者的意義不大。大多數情況下,我們都應該用null。undefined僅僅在判斷函數參數是否傳遞的情況下有用
    • 數組,①直接用[]創建數組 ②用Array()函數
      出於代碼的可讀性考慮,強烈建議直接使用[]
    • 對象,是一組由鍵-值組成的無序集合,鍵都是字符串類型,值可以是任意數據類型
    • 變量,在JavaScript中就是用一個變量名錶示,變量名是大小寫英文、數字、$和_的組合,且不能用數字開頭,可以用中文,但是,請不要給自己找麻煩。

  • 縮進,通常是4個空格
  • 安裝VSCode
  • var這種變量本身類型不固定的語言稱之爲動態語言,與之對應的是靜態語言。靜態語言在定義變量時必須指定變量類型,如果賦值的時候類型不匹配,就會報錯。例如Java語言
  • 如果一個變量沒有通過var申明就被使用,那麼該變量就自動被申明爲全局變量
  • strict模式,強制通過var申明變量,否則報錯,在JavaScript代碼的第一行寫上'use strict';啓用該模式

  • 字符串
    • 多行字符串,用反引號`…`表示(ES6新增)
    • 模板字符串,用${name}表示,可以自動替換字符串中的變量(ES6新增,注意,name所表示的是一個變量名)
    • 操作字符串
      • 獲取位置用索引,類似數組,例如s[13]; // undefined 超出範圍的索引不會報錯,但一律返回undefined
      • 特別注意字符串不可變
      • 如果對字符串的某個索引賦值,不會有任何錯誤,但是,也沒有任何效果
      • toUpperCasetoLowerCaseindexOf(指定字符串位置)、substring(返回指定索引區間的子串,注意[ , ))、

  • 數組
    • 大多數其他編程語言不允許直接改變數組的大小,越界訪問索引會報錯。然而,JavaScriptArray卻不會有任何錯誤,它會修改Array的大小
    • 常用方法
      • indexOf() 對應 String的indexOf()定位
      • slice() 對應 String的substring(),如果不給slice()傳遞任何參數,它就會從頭到尾截取所有元素。
      • push()pop()在數組末尾操作,添加或刪除若干元素
      • unshift()shift(),同上,在數組頭部操作
      • sort()排序reverse()反轉
      • splice()方法是修改Array的 “萬能方法”,它可以從指定的索引開始刪除若干元素,然後再從該位置添加若干元素,方法返回被刪除的元素
      • concat()連接
      • join()每個元素都用指定的字符串連接起來,然後返回連接後形成的字符串
    • 多維數組:var arr = [[1, 2, 3], [400, 500, 600], '-'];

  • 對象
    • 鍵必須是字符串(鍵又名,Key、屬性名)
    • 如果屬性名包含特殊字符(無效的變量),就必須用''括起來,用['xxx']來訪問
    • key是一個合法的變量名時,Object['key']Object.key作用一樣
    • 由於JavaScript的對象是動態類型,你可以自由地給一個對象添加或刪除屬性
    • 判斷一個屬性存在:key in object
    • 判斷一個屬性是否是自身擁有的:object.hasOwnProperty(key)

  • 條件循環和判斷
    • JavaScript 把nullundefined0NaN和空字符串''視爲false,其他值一概視爲true
    • for循環的3個條件都是可以省略的,如果沒有退出循環的判斷條件,就必須使用break語句退出循環,否則就是死循環
    • Array 數組也是一個對象,而它的每個元素的索引被視爲對象的屬性

  • Map、Set 和 iterable
    • 初始化Map需要一個二維數組,或者直接初始化一個空Map(用.set()添加key-value
    • Set和Map類似,也是一組key的集合,但不存儲value。由於key不能重複,所以,在Set中,沒有重複的元素(用.add()添加key
    • delete刪除元素
    • for ... in循環由於歷史遺留問題,它遍歷的實際上是對象的屬性名稱
    • for ... of循環則完全修復了這些問題,它只循環集合本身的元素
    • iterable內置的forEach方法,它接收一個函數,每次迭代就自動回調該函數
    • SetArray類似,但Set沒有索引,因此回調函數的前兩個參數(valuekey)都是元素本身
    • JavaScript函數調用不要求參數必須一致

函數

  • 函數就是最基本的一種代碼抽象的方式
  • 如果沒有return,函數執行完畢後也會返回結果,只是結果爲undefined
  • 在JavaScript中函數是一個對象,函數名可以視爲指向該函數的一個變量
  • 匿名函數,沒有函數名,定義時var abs = function (x) {...};
  • 因爲函數調用時對參數沒有要求,所以多傳參少傳參都不會報錯
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章