91网首页-91网页版-91网在线观看-91网站免费观看-91网站永久视频-91网站在线播放

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

js數據類型與類型轉換

freeflydom
2025年6月5日 9:53 本文熱度 143

在程序語言中,數據類型是基礎,一切程序都是建立在基礎數據之上。

如果說程序如同萬丈高樓平地起,那么數據類型就像沙、石、鋼筋、水泥等等最基礎的原料。一樣的高樓,不同的人,用相同的原料,造的方法也會有千般變化。

在 JS 中,數據類型可以分為 原始類型 和 對象類型

原始類型

直接存儲值,不可變(值的地址不可變),共 7 種:

1、number 數值類型,包括整數、浮點數、Infinity、NaN。

const num1 = 123;
const num2 = 123.456;
const num3 = Infinity;
const num4 = NaN;
const num5 = new Number(456); // 使用構造函數聲明,獲得一個 Number 對象
console.log(typeof num5); // object
const num6 = Number(456); // 函數式聲明 Number 類型
console.log(typeof num6); // number

2、string 字符串類型。單雙引號聲明的字符串不允許換行,可使用反引號申明多行字符串和模版字符串。

const str1 = 'hello'; // JS 中聲明字符串允許單引號和雙引號
const str1_1 = '\'hello\''; // 單引號中還有單引號需要使用反斜線轉義字符串
const str2 = " world";
const str3 = str1 + str2; // 字符串拼接,獲得 hello world
const str4 = `前端路引
${str1}${str2}`; // 多行模版字符串聲明,允許有換行和變量存在, ${str1}${str2} 表示拼接兩個變量
const str5 = new String('前端路引');
console.log(typeof str5); // object
const str6 = String('前端路引');
console.log(typeof str6); // number

3、boolean 布爾值(true/false)。

const bool1 = true;
const bool2 = false;
const bool3 = new Boolean(true);
console.log(typeof bool3); // object
const bool4 = Boolean(true);
console.log(typeof bool4); // boolean

4、null 表示空值。

const empty = null;
console.log(typeof empty); // object

5、undefined 未定義的值。

let u1; // 未聲明變量,默認為 undefined
const u2 = undefined; // 顯示使用 undefined 聲明變量

6、symbol 唯一且不可變的值(符號)。就算使用 Symbol 聲明的內容一樣,但是兩個變量其實是不相等的!!

const sym1 = Symbol('前端路引'); // 帶描述的符號
const sym2 = Symbol('前端路引');
console.log(sym1 === sym2); // false
const sym3 = Symbol.for('前端路引'); // 全局符號
const sym4 = Symbol.for('前端路引');
console.log(sym3 === sym4); // true
console.log(Symbol.keyFor(sym3)); // 前端路引
const sym5 = Symbol(); // 不帶描述的符號

7、bigint 大整數(以 n 結尾,如 123n),一般用于表示大于 2^53 - 1 的整數,ES2020+ 引入的新的數據類型,使用時需注意兼容性。

const big1 = 123n;
const big2 = BigInt(123);
console.log(big1 === big2); // true
console.log(typeof big1); // bigint
console.log(big1 === 123) // false
console.log(big1 === 123n); // true

對象類型

存儲引用(內存地址),可變,包含所有非原始類型的值:

1、普通對象

const obj1 = {}; // 創建一個空對象
const obj2 = { name: '前端路引', age: 1 }; // 帶屬性的對象
const obj3 = new Object(); // 使用構造函數創建對象
const obj4 = Object({name: '前端路引'});

2、數組

const arr1 = []; // 空數組
const arr2 = [1, 2, 3]; // 帶元素的數組
const arr3 = new Array();
const arr4 = Array(10).fill('前端路引'); // 創建一個長度為 10 的數組,并填充內容

3、函數

function func1() {
  console.log('Function 1');
}
const func2 = function() {
  console.log('Function 2');
};
const func3 = () => {
  console.log('Function 3');
};

除了基礎的三種基礎對象類型外,JS 還內置了很多其他對象,比如 Date、RegExp、Error、Map、Set、WeakMap、WeakSet、Promise、Proxy、ArrayBuffer 等。

類型轉換

JS 的類型轉換分為隱式轉換(明確表明由 A 轉為 B)和顯式轉換(自動發生的類型轉換)。

顯式轉換

通過對象方法強制轉換:

1、轉字符串

String(123);      // "123"
[1,2].toString(); // "1,2"

2、轉數字

Number("123");   // 123
Number("abc");   // NaN
parseInt("14px");// 12

3、轉布爾

Boolean("");     // false
Boolean({});     // true

隱式轉換

一半多發生于運算符,比如:

1、字符串拼接

console.log('1' + 1); // 11
console.log(1 + '1'); // 11

2、數學運算

console.log('1' - 1); // 0
console.log(1 - '1'); // 0
console.log('1' * 1); // 1
console.log(1 * '1'); // 1
console.log('1' / 1); // 1
console.log(1 / '1'); // 1

3、邏輯運算

if (0) { // 0 為 false,將不會執行代碼塊
  console.log('0');
}

常見轉換規則

原始值轉字符串轉數字轉布爾值
true"true"1true
false"false"0false
0"0"0false
""""0false
"123""123"123true
null"null"0false
undefined"undefined"NaNfalse
NaN"NaN"NaNfalse
[]""0true
[5]"5"5true
{}"[object Object]"NaNtrue

常見陷阱與最佳實踐

1、== vs ===

  • == 會進行類型轉換: 0 == false 為 true
  • === 嚴格比較類型和值,推薦使用。

2、NaN的判斷

  • NaN === NaN 為 false,使用 Number.isNaN(value) 或 Object.is(value, NaN)

3、對象轉換

  • 對象轉原始值時,優先調用 valueOf(),再 toString()
  • {} + [] 可能被解析為代碼塊,導致結果意外。

4、parseInt基數

  • 總是指定基數:parseInt("08", 10) 避免八進制誤解。

寫在最后

由于 JavaScript 屬于弱類型語言,所以在編碼時候特別需要注意類型轉換問題。特常見問題:后端返回的數據類型是字符串 '1',在前端當做數字 1 使用,這時候分分鐘踩雷。

轉自https://www.cnblogs.com/linx/p/18890277


該文章在 2025/6/5 9:53:36 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved

主站蜘蛛池模板: 午夜一区二区视频 | 韩日欧美| 不卡一区在线播放 | 午夜视频一区二区 | 碰97精品视| 国产91视频在线 | 日本中文字幕高清7 | 日韩欧国产 | 国内成人免费视 | 国产综合22p| 日韩午间成人 | 欧美在线观看二区 | 91免费在| 国产精品盗摄视频 | 国产视频线路一 | 蜜桃视频在线观看 | 国产激情在线不卡 | 日韩精品成人大片 | 成人福利影视 | 国产亚洲久一区二区 | 午夜福利蜜桃青 | 久热不卡 | 国产1区精品 | 91国内揄拍国内精 | 成人永久免费高清 | 国产嫖妓免费视频 | 欧美三级黄| 91脚交| 成人精品国产一区 | 国产另类在 | 國產精品va | 日韩炮片 | 亚洲无码他人妻中 | 国产91视频一区 | 国产尤物a | 日韩美女午夜福利 | 岛国精品成人 | 日本精品视频在线 | 中文字幕自拍偷拍 | 国产va免费精 | 精品国产福利在 |