日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

js 数据类型笔记

發布時間:2023/12/20 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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 運算符

這個運算符測試一個值到底是什么數據類型
重點就是

typeof null // "object" typeof undefined // "undefined"

二、null, undefined 和布爾值

1、null, undefined轉數字化

null 轉為數字是 0
undefined 轉為數字是 NAN

2、null, undefined的使用場景

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() // undefined

3、布爾值

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] ); //hconsole.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(); //HELLOstr.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 // 1o2.b = 2; o1.b // 2

7、表達式還是語句?

JavaScript規定,如果行首是大括號,一律解釋為語句(即代碼塊)。
如果要解釋為表達式(即對象),必須在大括號前加上圓括號。

eval('{foo: 123}') // 123 這是一個語句,表示一個代碼區塊,里面有一個標簽foo,指向表達式123。 eval('({foo: 123})') // {foo: 123} 這是一個表達式,表示一個包含foo屬性的對象 {foo:123}.foo 是錯誤的 ({foo:123}).foo //輸出的是123

8、對象的使用方法

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就是定義了一個變量,里面放的就是對象的屬性

總結

以上是生活随笔為你收集整理的js 数据类型笔记的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。