摘要:狹義的對(duì)象數(shù)組函數(shù)運(yùn)算符這個(gè)運(yùn)算符測(cè)試一個(gè)值到底是什么數(shù)據(jù)類型重點(diǎn)就是二和布爾值轉(zhuǎn)數(shù)字化轉(zhuǎn)為數(shù)字是轉(zhuǎn)為數(shù)字是的使用場(chǎng)景表示空值。
這篇文章主要是對(duì)阮一峰老師javascript教程中數(shù)據(jù)類型和運(yùn)算的筆記,方便記憶。
有需要的朋友建議直接觀看阮一峰老師javascript教程,寫得更詳細(xì)
1.1數(shù)值(number):整數(shù)和小數(shù)
1.2字符串(string):文本
1.3布爾值(boolean):表示真?zhèn)蔚膬蓚€(gè)特殊值,即true(真)和false(假)
1.4undefined:表示“未定義”或不存在
1.5null:表示空值,
1.6對(duì)象(object):各種值組成的集合,分成三個(gè)子類型。
狹義的對(duì)象(object)
數(shù)組(array)
函數(shù)(function)
2、typeof 運(yùn)算符這個(gè)運(yùn)算符測(cè)試一個(gè)值到底是什么數(shù)據(jù)類型
重點(diǎn)就是
typeof null // "object" typeof undefined // "undefined"二、null, undefined 和布爾值 1、null, undefined轉(zhuǎn)數(shù)字化
null 轉(zhuǎn)為數(shù)字是 0
undefined 轉(zhuǎn)為數(shù)字是 NAN
null表示空值。
undefined表示“未定義”,場(chǎng)景有4個(gè)
2.1變量聲明了,但沒有賦值
var i; i // undefined
2.2調(diào)用函數(shù)時(shí),應(yīng)該提供的參數(shù)沒有提供,該參數(shù)等于 undefined
function f(x) { return x; } f() // undefined
2.3對(duì)象沒有賦值的屬性
var o = new Object(); o.p // undefined
2.4函數(shù)沒有返回值時(shí),默認(rèn)返回 undefined
function f() {} f() // undefined3、布爾值
3.1哪些運(yùn)算符會(huì)產(chǎn)出布爾值
前置邏輯運(yùn)算符: ! (Not)
相等運(yùn)算符:===,!==,==,!=
比較運(yùn)算符:>,>=,<,<=
3.2其他數(shù)據(jù)類型轉(zhuǎn)換成布爾值
轉(zhuǎn)換規(guī)則是除了下面六個(gè)值被轉(zhuǎn)為false,其他值都視為true。
undefined
null
false
0
NaN
""或""(空字符串)
3.3轉(zhuǎn)換成布爾值的應(yīng)用環(huán)境
大部分是用于判斷程序流程,如下面把if()里面判斷成布爾值
if ("") { console.log("true"); }三、數(shù)值(該部分內(nèi)容較多,我只是簡(jiǎn)要摘取一部分)
數(shù)值組成方式
JavaScript 內(nèi)部,所有數(shù)字都是以64位浮點(diǎn)數(shù)形式儲(chǔ)存。
第1位:符號(hào)位,0表示正數(shù),1表示負(fù)數(shù)
第2位到第12位(共11位):指數(shù)部分
第13位到第64位(共52位):小數(shù)部分(即有效數(shù)字)
1、定義:
字符串就是零個(gè)或多個(gè)排在一起,放在單引號(hào)或雙引號(hào)之中的字符
2、字符串使用的異常場(chǎng)景
2.1 單引號(hào)字符串的內(nèi)部,可以使用雙引號(hào),不能直接使用單引號(hào)。雙引號(hào)字符串的內(nèi)部,可以使用單引號(hào),不能直接使用雙引號(hào)
"key = "value""
2.2 在單引號(hào)字符串的內(nèi)部,使用單引號(hào),就必須在內(nèi)部的單引號(hào)前面加上反斜杠,用來轉(zhuǎn)義
"Did she say "Hello"?" // "Did she say "Hello"?"
2.3字符串默認(rèn)只能寫在一行內(nèi),分成多行將會(huì)報(bào)錯(cuò)
"a b c" // SyntaxError: Unexpected token ILLEGAL
2.4如果長(zhǎng)字符串必須分成多行,可以在每一行的尾部使用反斜杠
注意,反斜杠的后面必須是換行符,而不能有其他字符(比如空格),否則會(huì)報(bào)錯(cuò)。
var longString = "Long long long string"; longString // "Long long long string"
2.5可以用+連接多個(gè)單行字符串,將長(zhǎng)字符串拆成多行書寫
var longString = "Long " + "long " + "long " + "string";
2.6 es6新增寫法
使用`包裹字符串,就可以實(shí)現(xiàn)換行。**這個(gè)符號(hào)是鍵盤esc下面那個(gè)鍵**
3、字符串的使用
3.1獲取字符串的長(zhǎng)度
var str = "hello"; console.log( str.length );
3.2通過下標(biāo)獲取到字符串某個(gè)字符的值
console.log( str[0] ); //h console.log( str[str.length - 1] ); // 0
3.3通過charaAt獲取到字符串某個(gè)字符的值
var str = "hello"; console.log( str.charAt(0) ); // h console.log( str.charCodeAt(0) ); //輸出對(duì)應(yīng)字符的ASCII碼
3.4字符串截取
注意截取后,原來的字符串不變
var str = "hello world"; var sub1 = str.substr(1, 3); // 第一個(gè)是開始位置, 第二個(gè)是長(zhǎng)度 var sub2 = str.substring(1, 3); // 第一個(gè)是開始位置,第二個(gè)是結(jié)束位置,str[結(jié)束位置]不會(huì)被截取進(jìn)去
3.5用search查找字符串內(nèi)是否有對(duì)應(yīng)的內(nèi)容
原來的字符串不變
var str = "hello my world"; var s1 = str.search("my"); //6(開始位置) 找不到為-1
3.6 用replace替換字符串的值
原來的字符串不變
var s2 = str.replace("my", "your") //前面是被替換內(nèi)容,后面是替換內(nèi)容
3.7改變字符串大小寫
字符串操作不會(huì)修改原來的字符串
var str = "Hello"; str.toUpperCase(); //HELLO str.toLowerCase(); //hello
3.8字符串拼接
兩個(gè)不同字符串相+
var str1="hello" var str2="world" str1+str2 //"helloworld"
字符串名和字符串相加
var color ="red" var str="衣服的顏色是"+color //衣服的顏色是red
字符串模板
var name = "饑人谷" var website = "jirengu.com" var str = `你好, 這里是${name},${website},開啟你的前端之路` //"你好, 這里是饑人谷,jirengu.com,開啟你的前端之路"五、對(duì)象 1、定義:
對(duì)象就是一組“鍵值對(duì)”(key-value)的集合,是一種無序的復(fù)合數(shù)據(jù)集合。
2、對(duì)象的組成var obj = { foo: "Hello", bar: "World" };
該對(duì)象內(nèi)部包含兩個(gè)鍵值對(duì)
foo是“鍵名”(成員的名稱),字符串Hello是“鍵值”(成員的值)
兩個(gè)鍵值對(duì)之間用逗號(hào)分隔
3、鍵名的定義規(guī)則對(duì)象的每一個(gè)鍵名又稱為“屬性”(property)
3.1對(duì)象的所有鍵名都是字符串,可以不用打引號(hào)
3.2鍵名如果是數(shù)值,會(huì)轉(zhuǎn)成字符串
var obj = { 1: "a", 3.2: "b", 1e2: true, 1e-2: true, .234: true, 0xFF: true };
3.3鍵名的命名滿足標(biāo)識(shí)名的條件,不然就要打上引號(hào)
var obj = { 1p: "Hello World" }; // 不報(bào)錯(cuò) var obj = { "1p": "Hello World", "h w": "Hello World", "p+q": "Hello World" };4、鍵值的使用場(chǎng)景
對(duì)象的每一個(gè)鍵名又稱為“屬性”(property),它的“鍵值”可以是任何數(shù)據(jù)類型。
4.1屬性的值為函數(shù),通常把這個(gè)屬性稱為“方法”,它可以像函數(shù)那樣調(diào)用。
var obj = { p: function (x) { return 2 * x; } }; obj.p(1) // 2
4.2屬性的值還是一個(gè)對(duì)象,就形成了鏈?zhǔn)揭谩?/p>
var o1 = {}; var o2 = { bar: "hello" }; o1.foo = o2; o1.foo.bar // "hello"5、對(duì)象獲取鍵值的方式(只有兩種)
5.1通過對(duì)象名.屬性名來獲取屬性的值
var o1 = {}; var o2 = { bar: "hello" }; o1.foo = o2; **o1.foo.bar** // "hello"
5.2通過對(duì)象名["屬性名"]來獲取屬性的值,注意中括號(hào)里面是字符串,所以一定要加引號(hào)
o1["foo"] ol[foo]就是錯(cuò)誤的,因?yàn)闉g覽器解析時(shí)會(huì)認(rèn)為foo是一個(gè)變量,找不到這個(gè)變量就會(huì)報(bào)錯(cuò)6、對(duì)象的引用
如果把一個(gè)原始類型(number 字符串 等)的值賦值給變量。那變量這時(shí)都是值的拷貝。
如果把對(duì)象賦值給變量,我們只是將對(duì)象的存儲(chǔ)地址指向了變量。
如果不同的變量名指向同一個(gè)對(duì)象,那么它們都是這個(gè)對(duì)象的引用,修改其中一個(gè)變量,會(huì)影響到其他所有變量。
var o1 = {}; var o2 = o1; o1.a = 1; o2.a // 1 o2.b = 2; o1.b // 27、表達(dá)式還是語(yǔ)句?
JavaScript規(guī)定,如果行首是大括號(hào),一律解釋為語(yǔ)句(即代碼塊)。
如果要解釋為表達(dá)式(即對(duì)象),必須在大括號(hào)前加上圓括號(hào)。
eval("{foo: 123}") // 123 這是一個(gè)語(yǔ)句,表示一個(gè)代碼區(qū)塊,里面有一個(gè)標(biāo)簽foo,指向表達(dá)式123。 eval("({foo: 123})") // {foo: 123} 這是一個(gè)表達(dá)式,表示一個(gè)包含foo屬性的對(duì)象
{foo:123}.foo 是錯(cuò)誤的 ({foo:123}).foo //輸出的是1238、對(duì)象的使用方法
8.1 檢查變量是否聲明
原理:在瀏覽器環(huán)境,所有全局變量都是window對(duì)象的屬性。
window.a的含義就是讀取window對(duì)象的a屬性,如果該屬性不存在,就返回undefined,并不會(huì)報(bào)錯(cuò)。
if ("a" in window) { // 變量 a 聲明過 } else { // 變量 a 未聲明 }
8.2屬性的賦值
和讀取值一樣,有兩種方法
o.p = "abc"; o["p"] = "abc";
8.3用Object.keys查看所有屬性
var o = { key1: 1, key2: 2 }; Object.keys(o); // ["key1", "key2"]
8.4 delete刪除對(duì)象的屬性
var o = {p: 1}; Object.keys(o) // ["p"] delete o.p // true o.p // undefined
注意:delete命令不能刪除var命令聲明的變量,只能用來刪除屬性。因?yàn)関ar聲明的全局變量都是頂層對(duì)象的屬性,而且默認(rèn)不得刪除。
var p = 1; delete p // false delete window.p // false
8.5用for...in循環(huán)用來遍歷對(duì)象的全部屬性
var obj = {a: 1, b: 2, c: 3};
for (var i in obj) {
console.log(o[i]);
}
// 1
// 2
// 3
i就是定義了一個(gè)變量,里面放的就是對(duì)象的屬性
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/99334.html
摘要:學(xué)習(xí)筆記二個(gè)人學(xué)習(xí)筆記參考阮一峰的教學(xué)學(xué)習(xí)筆記二是對(duì)學(xué)習(xí)筆記一的補(bǔ)充歷史是標(biāo)準(zhǔn)新增特性匯總方應(yīng)航知乎專欄個(gè)小變化新增特性匯總方應(yīng)航知乎專欄以后一年一次只增加了兩個(gè)特性只增加了個(gè)特性功能最多數(shù)據(jù)類型補(bǔ)充字符串多行字符串新特性多行字符串 JavaScript學(xué)習(xí)筆記二 個(gè)人學(xué)習(xí)筆記 參考阮一峰的JavaScript教學(xué) 學(xué)習(xí)筆記二是對(duì)學(xué)習(xí)筆記一的補(bǔ)充 JavaScript歷史 sho...
摘要:定義運(yùn)算符用來判斷一個(gè)構(gòu)造函數(shù)的屬性所指向的對(duì)象是否存在另外一個(gè)要檢測(cè)對(duì)象的原型鏈上,用于引用類型。但其實(shí),實(shí)例的來自于構(gòu)造函數(shù)的。 一、關(guān)于css 樣式優(yōu)先級(jí): 行內(nèi)樣式>id選擇器樣式>類選擇器樣式>標(biāo)簽選擇器樣式>通配符選擇器的樣式>繼承樣式>默認(rèn)樣式 二、關(guān)于js 關(guān)于問題:**JavaScript中的所有事物都是對(duì)象??** 從typeof和instanceo...
摘要:最近由于做的項(xiàng)目需求牽扯到了大量的數(shù)據(jù)處理,于是就想了解一下中的數(shù)據(jù)類型,于是就百度了一下找到了些干貨,在這里精簡(jiǎn)下做個(gè)筆記,以方便日后需要的時(shí)候查看這里先說兩個(gè)概念堆棧堆是堆內(nèi)存的簡(jiǎn)稱。 最近由于做的項(xiàng)目需求牽扯到了大量的數(shù)據(jù)處理,于是就想了解一下javascript中的數(shù)據(jù)類型,于是就百度了一下找到了些干貨,在這里精簡(jiǎn)下做個(gè)筆記,以方便日后需要的時(shí)候查看:這里先說兩個(gè)概念:1、堆(...
摘要:基礎(chǔ)變量類型和計(jì)算中使用的類型基本類型引用類型對(duì)象數(shù)組函數(shù)引用類型只能區(qū)分基本類型,無法區(qū)分對(duì)象數(shù)組這三種引用類型何時(shí)使用何時(shí)使用字符串拼接類型轉(zhuǎn)換號(hào)語(yǔ)句邏輯運(yùn)算符當(dāng)時(shí)判斷一個(gè)變量是被當(dāng)做還是相當(dāng)于,簡(jiǎn)寫形式這是源碼中推薦的寫法其他情況全部 JavaScript基礎(chǔ)——變量類型和計(jì)算 q:JS中使用 typeof 的類型? 基本類型 `undefined` `null` `bool...
摘要:寫在前面本文記錄的是我不熟悉或者我認(rèn)為值得注意的地方,并不是書上知識(shí)點(diǎn)的概括。再就是畫圖這種。與瀏覽器沒有依賴關(guān)系。 寫在前面 本文記錄的是我不熟悉或者我認(rèn)為值得注意的地方,并不是書上知識(shí)點(diǎn)的概括。 第1章 JavaScript簡(jiǎn)介 JS誕生時(shí)間:1995年(好年輕...) JS誕生背景:表單數(shù)據(jù)合法性由服務(wù)端驗(yàn)證的用戶體驗(yàn)不好,希望能在客戶端進(jìn)行驗(yàn)證 JS現(xiàn)在用處:如果沒有...
閱讀 1628·2021-11-16 11:45
閱讀 2559·2021-09-29 09:48
閱讀 3328·2021-09-07 10:26
閱讀 1850·2021-08-16 10:50
閱讀 1883·2019-08-30 15:44
閱讀 2709·2019-08-28 18:03
閱讀 1909·2019-08-27 10:54
閱讀 1833·2019-08-26 14:01