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

這是基礎(chǔ)版的第二天,數(shù)據(jù)類型就像是java中的內(nèi)置對象與數(shù)據(jù)類型一樣,對于語法的一個基礎(chǔ)架構(gòu)

JavaScript有6中數(shù)據(jù)類型 (ES6 又新增了 Symbol 和 BigInt 數(shù)據(jù)類型,先不講述)

  • 數(shù)值 number
  • 字符串 string
  • 布爾值 boolean
  • undefined 聲明定義未賦值
  • null 聲明賦空值
  • 對象 object
    對象分為 函數(shù)function 數(shù)組array 對象object

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

  • typeof (數(shù)組,null,object返回都是'object')
  • instanceof (原本是判斷對象與構(gòu)造函數(shù)關(guān)系,所以右側(cè)必須是首字母大寫的類型)
  • Object.prototype.toString.call() (原本的tostring方法返回[object Object]改變this指針,得到的[object 首字母大寫的類型])

null與undefined

之所以放在開頭講述就是因為下面的類型都是具象的,這兩個對于初學(xué)者比較抽象

  • undefined
    聲明未賦值
    var x; (x是undefined類型,沒有值)
  • null
    聲明且賦空值
    var y = null; (y是null類型,且值為null,意思是空值)

注:

  • 當(dāng)出現(xiàn)undefiend的時候要注意:
    變量是否在相應(yīng)的作用域中有賦值
    對象訪問時,上級的訪問是否存在
  • 當(dāng)出現(xiàn)null的時候要注意:
    是否是后端傳遞的,可能格式需要溝通轉(zhuǎn)換

布爾值與數(shù)值

  • 布爾值boolean
    只有true與false,主要就是邏輯判斷結(jié)果,對應(yīng)著計算機(jī)底層的01編制

    強(qiáng)烈建議,搞編程的朋友們,不要腦子中全是是非對錯,多一些輻射的可能性,可以讓你的生活更加充實!

  • 數(shù)值number

    1. 正負(fù)0,是不同的,64位浮點數(shù)的符號位不同
    2. NaN,類型是number,但是數(shù)值不是數(shù)字
      判斷方式只有 isNaN(),不等于自己
    3. 正負(fù)Infinity
      數(shù)值正向溢出(overflow)瘾杭、負(fù)向溢出(underflow)
      判斷方式只有isFinite()

注:
數(shù)字相關(guān)的方法:

  1. parseInt('參數(shù)',進(jìn)制)
  2. parseFloat(參數(shù)); 將參數(shù)轉(zhuǎn)換成小數(shù)勘畔,只認(rèn)識一個小數(shù)點

布爾值六大0值:
false 0 null undefined NaN ‘’(空字符串)

內(nèi)置的數(shù)學(xué)方法:
Math.floor(3.999) 向下取整 去掉小數(shù)部分
Math.ceil(3.001)) 向上取整 只要有小數(shù)就進(jìn)位
Math.max(1, 2, 36, 9) 取參數(shù)的最大值
Math.min(1, 2, 36, 9)) 取參數(shù)的最小值
Math.floor(Math.random() 取(0,1]的隨機(jī)數(shù)

字符串

  • 轉(zhuǎn)義字符
    1.\n :換行符
    2.\t :制表符
    3.' :單引號
    4." :雙引號
    5.\ :反斜杠

  • 字符串屬性
    1.length長度
    2.下標(biāo)(index)
    str[index] str.charCodeAt(index)
    3.字符串就是一個字符數(shù)組

  • 轉(zhuǎn)碼方式
    1.Base64(原生攜帶的)
    btoa():任意值轉(zhuǎn)為 Base64 編碼
    atob():Base64 編碼轉(zhuǎn)為原來的值
    2.Unicode(語法攜帶的)
    str.charCodeAt(index) 字符轉(zhuǎn)unicode編碼
    String.fromCharCode(unicode編碼值) Unicode編碼值轉(zhuǎn)字符串

注:
字符串常用方法:
1. 查找:
字符串.indexOf(要查找的字符, 查找的起始位置); 從左向右找
字符串.lastIndexOf(要查找的字符, 查找的起始位置); 從右向左找

  1. 截取:
    字符串.substring(起始下標(biāo), 結(jié)束下標(biāo)),不含結(jié)束下標(biāo)
    字符串.slice(起始下標(biāo), 結(jié)束下標(biāo))吴叶,不含結(jié)束下標(biāo),建議使用
    字符串.substr(起始下標(biāo), 截取的個數(shù));,知道具體要截取的個數(shù),挺方便的
  2. 轉(zhuǎn)大小寫:
    字符串.toUpperCase() 轉(zhuǎn)大寫
    字符串.toLowerCase() 轉(zhuǎn)小寫
  3. 去首尾空格:
    字符串.trim(),去除字符串左右空格,IE8及以下不支持(正則方式解決)
    5.字符串拆分:
    字符串.split(分隔符)
    6.最強(qiáng)大的方法splice (刪除,添加,替換)
    字符串.replace(被替換的字符, 新的字符串)衡创,返回被替換以后的字符串虚青,不影響原字符串

數(shù)組

  • 數(shù)組屬性
    1.length長度
    2.下標(biāo)(index)
    arr[index]
    3.數(shù)組就是一個key為數(shù)字的對象
  • 數(shù)組的特殊運算符
    1.in
    字符串 in 數(shù)組 ,判斷數(shù)組的key中是否含有該字符串
    2.for( in )遍歷
    借助for循環(huán)與in形成的迭代方式

注:
數(shù)組常用方法:
1. 棧操作:
數(shù)組.push(參數(shù)),向數(shù)組的尾部添加海诲,返回數(shù)組的長度
數(shù)組.unshift(參數(shù)), 向數(shù)組的頭部添加檩互,返回數(shù)組的長度
數(shù)組.pop()特幔,刪除數(shù)組最后一項,返回被刪除的項
數(shù)組.shift()闸昨,刪除數(shù)組第一項蚯斯,返回被刪除的項

  1. 最強(qiáng)大的splice方法 (刪除,添加,替換)
    數(shù)組.splice(起始位置, 要刪除的個數(shù), 要添加的項...),會修改原數(shù)組饵较,也會返回新數(shù)組
    增(n,0,添加項列表)
    刪(n,m)
    改(n,m,修改后的項)拍嵌;先刪再加就是修改
  2. 數(shù)組排序:
    數(shù)組.sort() (可以自定義排序規(guī)則)
    4.數(shù)組合并:
    數(shù)組.concat(參數(shù), ...),將參數(shù)拼接到數(shù)組中循诉,返回新數(shù)組横辆,不影響原數(shù)組
    5.數(shù)組項反轉(zhuǎn):
    數(shù)組.reverse(),反轉(zhuǎn)數(shù)組打洼,返回反轉(zhuǎn)以后的數(shù)組龄糊,并修改原數(shù)組
    6.數(shù)組查詢:
    數(shù)組.indexOf(要查找的項[, 查找的起始位置])
    數(shù)組.lastIndexOf(要查找的項[, 查找的起始位置])
    7.數(shù)組截取:
    數(shù)組.slice(起始下標(biāo), 結(jié)束下標(biāo)),數(shù)組截取募疮,不影響原數(shù)組炫惩,返回截取的新數(shù)組
    8.數(shù)組類型判斷(類方法):
    Array.isArray()
    9.數(shù)組迭代方法:
    數(shù)組.forEach(function (item, index, array) { });循環(huán)數(shù)組(沒有返回值),代替for循環(huán)
    數(shù)組.map(function (item, index, array) { });循環(huán)數(shù)組阿浓,返回每次函數(shù)調(diào)用的結(jié)果組成的一個新數(shù)組(可以進(jìn)行邏輯與算術(shù)操作)
    數(shù)組.filter(function (item, index, array) { });循環(huán)數(shù)組他嚷,返回每次函數(shù)調(diào)用的結(jié)果為true的項組成的一個新數(shù)組(過濾)
    數(shù)組.every(function (item, index, array) { });循環(huán)數(shù)組,如果每次函數(shù)調(diào)用結(jié)果都為true,則返回true
    數(shù)組.some(function (item, index, array) { });循環(huán)數(shù)組筋蓖,函數(shù)調(diào)用只要有一個為true卸耘,則結(jié)果為true
    數(shù)組.find(function (item, index, array){}); 循環(huán)數(shù)組,條件返回true粘咖,則把對應(yīng)的item返回蚣抗,否則返回undefined
    數(shù)組.findIndex(function (item, index, array){}); 循環(huán)數(shù)組,條件返回true瓮下,則把對應(yīng)的item的下標(biāo)返回翰铡,否則返回-1
    10.數(shù)組轉(zhuǎn)字符串
    數(shù)組.join('連接符'),數(shù)組按照連接符連接
    11.數(shù)組求和
    數(shù)組.reduce(function (
    sum, // 累積變量讽坏,必須
    newVal, // 當(dāng)前變量锭魔,必須
    newIndex, // 當(dāng)前位置,可選
    array // 原數(shù)組路呜,可選
    ) { .... })

對象

現(xiàn)實世界你唯唯諾諾,虛擬世界你桃花滿身,對象new一個就來了

  • 對象屬性
    1.屬性
    對象.屬性 對象{屬性}
    2.對象就是一個key-value的鍵值對集合

  • 對象的特殊運算符
    1.in
    字符串 in 對象 ,判斷對象的key中是否含有該字符串
    2.for( in )遍歷
    借助for循環(huán)與in形成的迭代方式

注:
對象常用方法:
1. 屬性查看(類級方法)
Object.keys(對象),返回一個屬性組成的數(shù)組
Object.getOwnPropertyNames(),返回一個屬性名組成的數(shù)組

  1. 屬性權(quán)限配置
    Object.defineProperty(對象, 屬性, {配置內(nèi)容});
    Object.getOwnPropertyDescriptor(obj,屬性名)方法可以獲取屬性描述對象

函數(shù)

  • 函數(shù)兩種表現(xiàn)形式
    1.函數(shù)聲明式:

    function xxx(){}   
    

    2.函數(shù)表達(dá)式:(本質(zhì)上是變量賦值)

    let xxx = function(){}
    
  • 函數(shù)提升
    1.遇到function會提升到作用域頂部
    2.函數(shù)與變量同名,函數(shù)會覆蓋變量
    3.同名函數(shù),順序在后覆蓋順序在前

  • 函數(shù)的基本信息
    1.函數(shù)參數(shù)
    實參與形參一一對應(yīng),沒有傳遞則為undefined
    形參可以有默認(rèn)值,實參可以有缺省值
    形參個數(shù)未知,可以使用arguments

    1. 函數(shù)返回值
      函數(shù)的調(diào)用結(jié)果,用于后續(xù)的處理
  1. 函數(shù)作用域
    先從函數(shù)中尋找變量,沒有再逐層往上尋找到全局,全局沒有就是undefined

注:
函數(shù)進(jìn)階:
1. 回調(diào)函數(shù): callback
通常是一種初步解決異步的方式
2. 自執(zhí)行函數(shù)(匿名函數(shù)): 做一些檢測等嵌入式操作(防止對于原代碼有影響)

     (function () { })();

3.閉包
函數(shù)return嵌套函數(shù)
內(nèi)部函數(shù)可以讀取外部函數(shù)的變量迷捧、參數(shù)或者函數(shù)
這個內(nèi)部函數(shù)在包含它的外部函數(shù)外面被調(diào)用

    function xxx(){
      return function(){
      }
    }
注:
   閉包能記住它的誕生環(huán)境,這些變量會一直存在內(nèi)存中
   如果大量的數(shù)據(jù)被緩存胀葱,可能造成內(nèi)存泄漏漠秋,在使用閉包的時候要慎重。
   閉包溝通函數(shù)內(nèi)部和外部的橋梁,緩存數(shù)據(jù)巡社,延伸變量的作用范圍膛堤。

4.回調(diào)函數(shù): 一些復(fù)雜的邏輯
自己調(diào)用自己,但必須有遞歸出口

   function  xxx(){
    //遞歸出口判斷
    if(){
      xxx()
    }
 }
今天體會了以下簡書的markdom編輯方式,還行!預(yù)告一下,明天會了解JavaScript自置的特殊對象!
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末手趣,一起剝皮案震驚了整個濱河市晌该,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌绿渣,老刑警劉巖朝群,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異中符,居然都是意外死亡姜胖,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進(jìn)店門淀散,熙熙樓的掌柜王于貴愁眉苦臉地迎上來右莱,“玉大人,你說我怎么就攤上這事档插÷眩” “怎么了?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵郭膛,是天一觀的道長晨抡。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么耘柱? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任如捅,我火速辦了婚禮,結(jié)果婚禮上调煎,老公的妹妹穿的比我還像新娘镜遣。我一直安慰自己,他們只是感情好士袄,可當(dāng)我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布烈涮。 她就那樣靜靜地躺著,像睡著了一般窖剑。 火紅的嫁衣襯著肌膚如雪坚洽。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天西土,我揣著相機(jī)與錄音讶舰,去河邊找鬼。 笑死需了,一個胖子當(dāng)著我的面吹牛跳昼,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播肋乍,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼鹅颊,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了墓造?” 一聲冷哼從身側(cè)響起堪伍,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎觅闽,沒想到半個月后帝雇,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡蛉拙,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年尸闸,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片孕锄。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡吮廉,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出畸肆,到底是詐尸還是另有隱情宦芦,我是刑警寧澤,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布恼除,位于F島的核電站踪旷,受9級特大地震影響曼氛,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜令野,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一舀患、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧气破,春花似錦聊浅、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至碳锈,卻和暖如春顽冶,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背售碳。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工强重, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人贸人。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓间景,卻偏偏與公主長得像,于是被迫代替她去往敵國和親艺智。 傳聞我的和親對象是個殘疾皇子倘要,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,713評論 2 354

推薦閱讀更多精彩內(nèi)容