JS 里的數(shù)據(jù)類型

1. 七種數(shù)據(jù)類型

  • number 數(shù)值 :整數(shù)和小數(shù)
  • string字符串 : 文本
  • boolean布爾值 :true false
  • undefined :未定義或不存在
  • null :空值
  • object對象 : 值的集合
  • symbol
    前五種是基本類型
    對象包括: object 、 array數(shù)組 钧萍、function函數(shù)

2. typeof 運算符 typeof 可以用來檢查一個沒有聲明的變量褐缠,而不報錯。

數(shù)值 : number
字符串 :string
布爾值 :boolean
函數(shù) :function
undefined :undefined
null : object

3.null 和 undefined

區(qū)別:null是一個空值 轉為數(shù)值時為0
undefined 是一個表示 “此處未定義” 的原始值风瘦,轉為數(shù)值時為 NaN
在 if 語句中兩個都是 false
相等運算符(==)甚至直接報告兩者相等

用法和含義

調用函數(shù)時队魏,某個參數(shù)未設置任何值,傳入null万搔,表示參數(shù)為空

undefined 未定義

  • 變量聲明胡桨,但未賦值
  • 調用函數(shù)時,應該提供的參數(shù)沒有提供瞬雹,該參數(shù)等于undefined.
  • 對象沒有賦值的屬性
  • 函數(shù)沒有返回值昧谊,默認返回undefined

4. 布爾值 true false

  • 兩元運算符 &&(and) //(or)
  • 前置邏輯運算符 ! (not)
  • 相等運算符 === == !== !=
  • 比較運算符 > < >= <=
    一般用于程序流程的控制

空數(shù)組([])和空對象({})對應的布爾值酗捌,都是true

五個falsy值 其他都為true

undefined null 0 NaN ' '(空字符串) false

5. Number

所有數(shù)字都是以64喂浮點數(shù)儲存

數(shù)值精度

第一位 : 符號位 0 正 1 負
第2到12位: 指數(shù)部分
第13到64位:小數(shù)部分 (有效數(shù)字)

數(shù)值范圍:21024~2-1023

a> 2^1024 正向溢出 返回Infinity
a< 2^-1075 負向溢出 返回0

數(shù)值的表示法

科學計數(shù) :
123e3 //123000 123e-3 //0.123
自動轉為 小數(shù)點后的0 多余5
(0.0000003 //3e-7)
小數(shù)點前的數(shù)字多余21位

數(shù)值的進制

2 8 10 16 進制
十進制 : 沒有前導 0的數(shù)字
八進制: 0o 或0O的數(shù)值 或有前導0 只用到0-7的數(shù)值 0o377 // 255
十六進制 : 0x或0X的數(shù)值 0xff //255
二進制: 有前綴0b 或0B的數(shù)值 0b11 // 3

特殊字符 0

正零 和 負零

+ 0 === -0 //true
唯一區(qū)別: 坐分母時返回值不一樣
1/+0 // +Infinity 1/-0 //-Infinity 無窮

NaN

表示 非數(shù)字 數(shù)據(jù)類型是Number
0/0 // NaN
運算規(guī)則

  • NaN不等于任何值呢诬,包括自身
  • NaN 布爾運算是false
  • NaN與任何值運算都是 NaN
  • 數(shù)組的indexof方法內部使用的是嚴格相等運算符,該方法對NaN不成立

6. Boolean 字符串

概述:就是多個或單個拍在一起的字符放在單引號或雙引號中意敛。

  • 單引號中使用多引號 雙引號中使用單引號
    " ' ' " ' " " '
  • 字符串默認寫在一行馅巷,分成多行會報錯
  • 多行字符串寫法
var long ='long'
   + 'long'
   + 'string';
var long = 'long\
long\
string`;

轉義符

\0 :null(\u0000) \b :后退鍵(\u0008)
\f :換頁符(\u000C) \n :換行符(\u000A)
\r :回車鍵(\u000D) \t :制表符(\u0009)
\ v :垂直制表符(\u000B) \ ' :單引號(\u0027)
\ " :雙引號(\u0022) \ \ :反斜杠(\u005C)

length 屬性

返回字符串的長度,屬性無法改變

Base 64 轉碼

btoa() : 任意值轉為 Base64 編碼
atob(): Base64編碼轉為原來的值

7. 對象 Object

概述 ; 對象就是一組 "鍵值對" 的集合草姻,無序的復合數(shù)據(jù)類型

對象的每一個鍵名又稱為“屬性”(property)钓猬,它的“鍵值”可以是任何數(shù)據(jù)類型。如果一個屬性的值為函數(shù)撩独,通常把這個屬性稱為“方法”敞曹,它可以像函數(shù)那樣調用。

  • 鍵名是數(shù)值综膀,自動轉為字符串
  • 鍵名不符合標識符的條件澳迫,也不是數(shù)字,必須加引號剧劝。
  • 鍵名 都是 屬性橄登,鍵值可以是任何數(shù)據(jù)類型

對象的引用

如果不同的變量名指向同一個對象,那么它們都是這個對象的引用,也就是說指向同一個內存地址拢锹。修改其中一個變量谣妻,會影響到其他所有變量。

如果取消某一個變量對于原對象的引用卒稳,不會影響到另一個變量

var o1 = {};
var o2 = o1;
o1 = 1;
o2   // {}

表達式還是語句

  • 行首是大括號蹋半,一律解釋為代碼塊。
  • 如果解釋為表達式充坑,在大括號外加上圓括號减江。
eval('{foo: 123}') // 123
eval('({foo: 123})') // {foo: 123}

如果沒有圓括號,eval將其理解為一個代碼塊捻爷;加上圓括號以后辈灼,就理解成一個對象。

屬性的操作

一種是使用點運算符役衡,還有一種是使用方括號運算符

var obj = {
  p: 'Hello World'
};
obj.p // "Hello World"
obj['p'] // "Hello World"
  • 如果使用方括號運算符茵休,鍵名必須放在引號里面薪棒,否則會被當作變量處理手蝎。
  • 數(shù)字鍵可以不加引號,因為會自動轉成字符串
  • 數(shù)值鍵名不能使用點運算符(因為會被當成小數(shù)點)俐芯,只能使用方括號運算符

屬性的賦值

點運算符棵介,還有一種是使用方括號運算符

var obj = {};
obj.foo = 'Hello';
obj['bar'] = 'World';

Object.keys 查看所有屬性

delete 命令 delete obj.width

delete命令用于刪除對象的屬性,刪除成功后返回true

  • 刪除一個不存在的屬性吧史,delete不報錯邮辽,而且返回true
  • 只有一種情況delete命令會返回false,那就是該屬性存在贸营,且不得刪除
  • delete命令只能刪除對象本身的屬性吨述,無法刪除繼承的屬性
    delete返回true,該屬性依然可能讀取到值 >>(繼承的屬性)

in 運算符

in運算符用于檢查對象是否包含某個屬性(注意钞脂,檢查的是鍵名揣云,不是鍵值),如果包含就返回true冰啃,否則返回false邓夕。
它不能識別哪些屬性是對象自身的,哪些屬性是繼承的阎毅。

var obj = { p: 1 };
'p' in obj // true
'toString' in obj  // true

for…in 循環(huán)

for...in循環(huán)用來遍歷一個對象的全部屬性焚刚。

它遍歷的是對象所有可遍歷(enumerable)的屬性,會跳過不可遍歷的屬性扇调。
它不僅遍歷對象自身的屬性矿咕,還遍歷繼承的屬性。

with 語句 不推薦使用

with語句的格式如下:
with (對象) {
語句;
}

var obj = {
  p1: 1,
  p2: 2,
};
with (obj) {
  p1 = 4;
  p2 = 5;
}
// 等同于
obj.p1 = 4;
obj.p2 = 5;

如果with區(qū)塊內部有變量的賦值操作,必須是當前對象已經(jīng)存在的屬性碳柱,否則會創(chuàng)造一個當前作用域的全局變量雌团。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市士聪,隨后出現(xiàn)的幾起案子锦援,更是在濱河造成了極大的恐慌,老刑警劉巖剥悟,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件灵寺,死亡現(xiàn)場離奇詭異,居然都是意外死亡区岗,警方通過查閱死者的電腦和手機略板,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來慈缔,“玉大人叮称,你說我怎么就攤上這事∶旰祝” “怎么了瓤檐?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長娱节。 經(jīng)常有香客問我挠蛉,道長,這世上最難降的妖魔是什么肄满? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任谴古,我火速辦了婚禮,結果婚禮上稠歉,老公的妹妹穿的比我還像新娘掰担。我一直安慰自己,他們只是感情好怒炸,可當我...
    茶點故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布带饱。 她就那樣靜靜地躺著,像睡著了一般横媚。 火紅的嫁衣襯著肌膚如雪纠炮。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天灯蝴,我揣著相機與錄音恢口,去河邊找鬼。 笑死穷躁,一個胖子當著我的面吹牛耕肩,可吹牛的內容都是我干的因妇。 我是一名探鬼主播,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼猿诸,長吁一口氣:“原來是場噩夢啊……” “哼婚被!你這毒婦竟也來了?” 一聲冷哼從身側響起梳虽,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤址芯,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后窜觉,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體谷炸,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年禀挫,在試婚紗的時候發(fā)現(xiàn)自己被綠了旬陡。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡语婴,死狀恐怖描孟,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情砰左,我是刑警寧澤匿醒,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站菜职,受9級特大地震影響青抛,放射性物質發(fā)生泄漏。R本人自食惡果不足惜酬核,卻給世界環(huán)境...
    茶點故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望适室。 院中可真熱鬧嫡意,春花似錦、人聲如沸捣辆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽汽畴。三九已至旧巾,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間忍些,已是汗流浹背鲁猩。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留罢坝,地道東北人廓握。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親隙券。 傳聞我的和親對象是個殘疾皇子男应,可洞房花燭夜當晚...
    茶點故事閱讀 44,979評論 2 355

推薦閱讀更多精彩內容

  • 第2章 基本語法 2.1 概述 基本句法和變量 語句 JavaScript程序的執(zhí)行單位為行(line),也就是一...
    悟名先生閱讀 4,149評論 0 13
  • 運算符是處理數(shù)據(jù)的基本方法娱仔,用來從現(xiàn)有的值得到新的值沐飘。JavaScript 提供了多種運算符,本章逐一介紹這些運算...
    許先生__閱讀 605評論 0 3
  • 什么是 JavaScript 語言牲迫? JavaScript 是一種輕量級的腳本語言薪铜。所謂“腳本語言”(script...
    oWSQo閱讀 1,790評論 0 1
  • a20 js里的數(shù)據(jù) 非標準的語法通過 Babel 來轉義使用將不存在的語法翻譯成存在的語法 js有 7 種數(shù)據(jù)...
    半齋閱讀 220評論 0 0
  • Linux的基本原則 由目的單一的小程序組成:組合小程序完成復雜任務。 一切皆文件恩溅。 盡量避免捕獲用戶接口隔箍。 配置...
    寫給我的公主的簡書閱讀 231評論 0 0