js 数据类型笔记
這篇文章主要是對阮一峰老師javascript教程中數據類型和運算的筆記,方便記憶。
有需要的朋友建議直接觀看阮一峰老師javascript教程,寫得更詳細
一:數據類型概述
1、簡介6種數據
1.1數值(number):整數和小數
1.2字符串(string):文本
1.3布爾值(boolean):表示真偽的兩個特殊值,即true(真)和false(假)
1.4undefined:表示“未定義”或不存在
1.5null:表示空值,
1.6對象(object):各種值組成的集合,分成三個子類型。
- 狹義的對象(object)
- 數組(array)
- 函數(function)
2、typeof 運算符
這個運算符測試一個值到底是什么數據類型
重點就是
二、null, undefined 和布爾值
1、null, undefined轉數字化
null 轉為數字是 0
undefined 轉為數字是 NAN
2、null, undefined的使用場景
null表示空值。
undefined表示“未定義”,場景有4個
- 2.1變量聲明了,但沒有賦值
- 2.2調用函數時,應該提供的參數沒有提供,該參數等于 undefined
- 2.3對象沒有賦值的屬性
- 2.4函數沒有返回值時,默認返回 undefined
3、布爾值
3.1哪些運算符會產出布爾值
- 前置邏輯運算符: ! (Not)
- 相等運算符:===,!==,==,!=
- 比較運算符:>,>=,<,<=
3.2其他數據類型轉換成布爾值
轉換規則是除了下面六個值被轉為false,其他值都視為true。
- undefined
- null
- false
- 0
- NaN
- ""或''(空字符串)
3.3轉換成布爾值的應用環境
大部分是用于判斷程序流程,如下面把if()里面判斷成布爾值
三、數值(該部分內容較多,我只是簡要摘取一部分)
數值組成方式
JavaScript 內部,所有數字都是以64位浮點數形式儲存。
第1位:符號位,0表示正數,1表示負數
第2位到第12位(共11位):指數部分
第13位到第64位(共52位):小數部分(即有效數字)
四、字符串
1、定義:
字符串就是零個或多個排在一起,放在單引號或雙引號之中的字符
2、字符串使用的異常場景
- 2.1 單引號字符串的內部,可以使用雙引號,不能直接使用單引號。雙引號字符串的內部,可以使用單引號,不能直接使用雙引號
- 2.2 在單引號字符串的內部,使用單引號,就必須在內部的單引號前面加上反斜杠,用來轉義
- 2.3字符串默認只能寫在一行內,分成多行將會報錯
- 2.4如果長字符串必須分成多行,可以在每一行的尾部使用反斜杠
注意,反斜杠的后面必須是換行符,而不能有其他字符(比如空格),否則會報錯。
var longString = 'Long \ long \ long \ string';longString // "Long long long string"- 2.5可以用+連接多個單行字符串,將長字符串拆成多行書寫
2.6 es6新增寫法
使用`包裹字符串,就可以實現換行。**這個符號是鍵盤esc下面那個鍵**
3、字符串的使用
3.1獲取字符串的長度
var str = "hello";console.log( str.length );3.2通過下標獲取到字符串某個字符的值
console.log( str[0] ); //hconsole.log( str[str.length - 1] ); // 03.3通過charaAt獲取到字符串某個字符的值
var str = "hello"; console.log( str.charAt(0) ); // h console.log( str.charCodeAt(0) ); //輸出對應字符的ASCII碼3.4字符串截取
注意截取后,原來的字符串不變
3.5用search查找字符串內是否有對應的內容
原來的字符串不變
3.6 用replace替換字符串的值
原來的字符串不變
3.7改變字符串大小寫
字符串操作不會修改原來的字符串
3.8字符串拼接
- 兩個不同字符串相+
- 字符串名和字符串相加
- 字符串模板
五、對象
1、定義:
對象就是一組“鍵值對”(key-value)的集合,是一種無序的復合數據集合。
2、對象的組成
var obj = {foo: 'Hello',bar: 'World' };- 該對象內部包含兩個鍵值對
- foo是“鍵名”(成員的名稱),字符串Hello是“鍵值”(成員的值)
- 兩個鍵值對之間用逗號分隔
3、鍵名的定義規則
對象的每一個鍵名又稱為“屬性”(property)
- 3.1對象的所有鍵名都是字符串,可以不用打引號
- 3.2鍵名如果是數值,會轉成字符串
- 3.3鍵名的命名滿足標識名的條件,不然就要打上引號
4、鍵值的使用場景
對象的每一個鍵名又稱為“屬性”(property),它的“鍵值”可以是任何數據類型。
- 4.1屬性的值為函數,通常把這個屬性稱為“方法”,它可以像函數那樣調用。
- 4.2屬性的值還是一個對象,就形成了鏈式引用。
5、對象獲取鍵值的方式(只有兩種)
- 5.1通過對象名.屬性名來獲取屬性的值
- 5.2通過對象名['屬性名']來獲取屬性的值,注意中括號里面是字符串,所以一定要加引號
6、對象的引用
- 如果把一個原始類型(number 字符串 等)的值賦值給變量。那變量這時都是值的拷貝。
如果把對象賦值給變量,我們只是將對象的存儲地址指向了變量。 - 如果不同的變量名指向同一個對象,那么它們都是這個對象的引用,修改其中一個變量,會影響到其他所有變量。
7、表達式還是語句?
JavaScript規定,如果行首是大括號,一律解釋為語句(即代碼塊)。
如果要解釋為表達式(即對象),必須在大括號前加上圓括號。
8、對象的使用方法
8.1 檢查變量是否聲明
原理:在瀏覽器環境,所有全局變量都是window對象的屬性。
window.a的含義就是讀取window對象的a屬性,如果該屬性不存在,就返回undefined,并不會報錯。
8.2屬性的賦值
和讀取值一樣,有兩種方法
8.3用Object.keys查看所有屬性
var o = {key1: 1,key2: 2 };Object.keys(o); // ['key1', 'key2']8.4 delete刪除對象的屬性
var o = {p: 1}; Object.keys(o) // ["p"]delete o.p // true o.p // undefined注意:delete命令不能刪除var命令聲明的變量,只能用來刪除屬性。因為var聲明的全局變量都是頂層對象的屬性,而且默認不得刪除。
var p = 1; delete p // false delete window.p // false8.5用for...in循環用來遍歷對象的全部屬性
var obj = {a: 1, b: 2, c: 3};
for (var i in obj) {
console.log(o[i]);
}
// 1
// 2
// 3
i就是定義了一個變量,里面放的就是對象的屬性
總結
- 上一篇: kubernetes in action
- 下一篇: 1960 范德蒙矩阵(数学贪心)