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