js數據類型的理解

標識符

標識符定義

定義: 標識符是指變量、函數、屬性的名字,或者函數的參數

  1. 區分大小寫
  2. 必須以字母 或$或_開頭

變量提升

js的工作引擎的工作方式:先解析代碼,獲取所有被聲明的變量,然后一步步的運行。這就讓所有的變量聲明語句,都會被提升到代碼的頭部,這就是變量提升。

變量提升的例子

    console.log(b)  //undefined
    var b=2
    等價于
    var b
    console.log(b)
    b=2

數據類型

  1. null(空缺)
  2. undefined(未定義)
  3. Number(數字類型)
  4. String(字符串類型)
  5. Boolean(布爾類型)
  6. Object(對象)

基本數據類型

基本數據類型

  1. Number(數字類型)
  2. String(字符串類型)
  3. Boolean(布爾類型)

Number

js的數字類型和其他語言不一樣,沒有整型和浮點型的區別,統一都是Number類型

   var a=10  //十進制
   var b=o73 //八進制
   var c=ox44  //十六進制

Number中的浮點數

浮點數:浮點數是指數字包含小數點,小數點后至少有一位數字(沒有或者是0會轉為整數),前面可以沒有。

  var a= 0.75;
  var b=.5;

雖然浮點數的最高精度是17位,但是真正計算的時候精度不如整數

1-0.9  //0.09999999999999998
0.1+0.2  //0.30000000000000004

數字范圍

Number不能表示所有數字,有個范圍

  • Number.MIN_VALUE: 5e-324
  • Number.MAX_VALUE: 1.7976931348623157e+308
    超過最值會被轉換為Infinity(無窮大),-Infinity(負無窮大)

判定無窮

可以通過isFinite()方法判斷。超過返回true,沒有返回false

isFinite(Number.MAX_VALUE + 1); // true
isFinite(Infinity);  // false
isFinite(NaN);       // false
isFinite(-Infinity); // false

isFinite(0);         // true
isFinite(2e64);      // true

isFinite("0");       // true

Boolean(布爾型)

布爾值代表“真”,“假”二中狀態,“真”用關鍵字“true”,"假"用關鍵字false

下列運算符會返回布爾值

  • 二元邏輯運算符: &&(And),||(Or)
  • 前置邏輯運算符: !(Not)
  • 相等運算符: ===,!==,==,!=
  • 比較運算符: >,<=,<,<=

下列值是false,其余都是true

  1. false
  2. ""
  3. null
  4. undifined
  5. NaN
  6. 0

String類型

數據用雙引號和單引號包裹起來的形式,俗稱字符串類型。
獲取字符串的長度可以用自帶的length屬性。從1開始

var a=''hhh'
a.length        //3

字符串類型自帶的方法

  1. indexOf()獲取元素位置,里面是字符串,沒有則返回-1。檢索從0開始。
  ' abc'.indexOf('b')   //1
  1. toUpperCase()轉換為大寫,toLowerCase()轉換為小寫 (原來的還是沒有改變)
  'abc'.toUpperCase()  //ABC
  'ABC'.toLowerCase()  //abc

數組和字符串之間的轉換

  1. 字符串的split()方法可以把字符串轉換成數組。默認用‘,‘’隔開 (原來的還是沒有改變)
'ab,c'.split("")    //['a','b',',','c']
'abc'.split()     //['abc']
'abcdf'.split('c')   //['ab','df']
  1. 數組的join()方法可以把數組轉換新的字符串,默認用','連接 (原來的還是沒有改變)
['a','b','c','d'].join()    //'a,b,c,d'
['a','b','c','d'].join('')    //'abcd'  用空的連接

獲取字符串中的片段

  1. substr(start,lenght)方法 檢索從0開始,返回新的字符串
  'abcdef'.substr(2,3)  //'cde'
  1. substring(start,end)方法,檢索從0開始,返回新的字符串,不包括end,長度為end-start
'abcdef'.substring(2,3)  //'c'

引用類型

Object(對象)又叫引用類型,包括三種。

  • 普通對象
  • 數組
  • 函數

函數:是一種特殊的對象,我們可以通過構成函數生成普通對象。

null和undefined的區別

null的用法和知識

null: 表示空,通常表示先占有一個內存,便于分配給后面元素。
典型用法:

  • 作為函數的參數,表示該函數的參數是一個沒有任何內容的對象。
  • 作為對象原型鏈的終點。

undefined的用法

undifined: 表示不存在的值,表示已經分配存放空間,但是沒有任何值。
典型用法:

  • 變量被聲明了,但是沒有賦值時,就等于undefined。
  • 調用函數時,應該提供的參數沒有提供,該參數就等于undefined
  • 對象沒有賦值的屬性,該屬性的值為undefined
  • 函數沒有返回值時,默認返回undefined

用法區別

  1. typeof運算符的值不一樣
   typeof(undefined)    //undefined
   typeof(null)            //object
  1. Number()方法的值不一樣
   Number(undefined)    //NaN
   Number(null)              // 0

undefined == null //true

typeof運算符的用法

定義

typeof運算符可以返回一個值的數據類型,返回的是字符串

typeof 5  //'number'
typeof 'adc'  //' string'
typeof null  //'object'
typeof undefined  //'undefined'
typeof NaN    //'number'
typeof function(){}  //' function'
typeof []     // 'object'
typeof {}   //'object'
typeof false  //'boolean'

NaN

NaN含義是Not a Number,表示非數字,NaN和任何值都不相等,也無法比較大小,包括自己

typeof NaN    //number

數據轉換

有三個函數可以把非數值轉換為數值

  1. Number()方法
  2. parseInt()方法
  3. parseFloat()方法

Number規則相當復雜而且不合理,幾乎不使用,常用的是后兩個,兩個規則類似.

  1. 忽略字符串前面的空白字符,找到第一個非空白字符
  2. 如果第一個字符不是-或者數字返回NaN
  3. 如果是繼續解析,直到非數值模式為止
  4. 0開頭會當做八進制,0x開頭會當做十六進制,但是可以指定第二個參數指定基數
parseInt("hh44")  //NaN
parseInt('-55')    //55
parseInt('5512')  //5512
parseFloat(".5")  //0.5
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,501評論 6 544
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,673評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,610評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,939評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,668評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 56,004評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,001評論 3 449
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,173評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,705評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,426評論 3 359
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,656評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,139評論 5 364
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,833評論 3 350
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,247評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,580評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,371評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,621評論 2 380

推薦閱讀更多精彩內容

  • 第5章 引用類型(返回首頁) 本章內容 使用對象 創建并操作數組 理解基本的JavaScript類型 使用基本類型...
    大學一百閱讀 3,264評論 0 4
  • 標簽: 我的筆記 ---學習資料:http://javascript.ruanyifeng.com/ 1. 導論 ...
    暗夜的怒吼閱讀 836評論 0 1
  • 使用Number函數,可以將任意類型的值轉化成數值。 下面分成兩種情況討論,一種是參數是原始類型的值,另一種是參數...
    青春前行閱讀 492評論 0 0
  • 你好似甜香蜜 讓我不由自主嘴角上揚泛起弧度 我一見你就笑 你的唇齒間碰撞聲音 如此清澈,勝似管簫如此優美 我一見你...
    栩辰徉閱讀 316評論 8 10
  • 一、apache server安全性設置 以Nobody用戶運行一般情況下,Apache是由Root 來安裝和運行...
    2d8f44a33137閱讀 580評論 0 2