JS 幾種數據類型及其轉換

ECMAScript 標準定義了 7 種數據類型: Number;String;Boolean;Symbol;Null;Undefined;Object 。通常,數值、字符串、布爾值、undefined和null這五種類型,合稱為簡單類型的值,即它們是最基本的數據類型,不能再細分了。對象則稱為復雜類型的值,因為一個對象往往是多個簡單類型的值的合成,可以看作是一個存放各種值的容器。(Symbol 和 object 類型,本文暫不涉及。)

1、number(數值)

(1)定義:根據 ECMAScript 標準,JavaScript 中只有一種數字類型:基于 IEEE 754 標準的雙精度 64 位二進制格式的值。它并沒有為整數給出一種特定的類型。簡單來說,JS中的所有數字都是以64位浮點數形式儲存,即使整數也是如此。PS:NaN,即非數值(Not a Number)是一個特殊的值,用于表示一個本來要返回數值的操作數未返回值得情況,設計此值的目的是防止出現拋出錯誤,導致代碼停止執行。NaN與任何值都不相等,包括其本身。

(2)例如:

    var num1 = 10; //十進制console.log(num1);console.log(typeof num1);var num2 = 070; //八進制console.log(num2);console.log(typeof num2);var num3 = 0xA; //十六進制console.log(num3);console.log(typeof num3);
復制代碼

(3)類型轉換(number):

1>.Number()函數:Number() 函數把對象的值轉換為數字。如果參數無法被轉換為數字,則返回 NaN。如下圖所示:

    console.log(Number(123));// 數字console.log(Number('123'));// 包含數字的字符串console.log(Number('123abc'));// 不含數字的字符串console.log(Number(''));// 特殊:空字符串console.log(Number(true));// 布爾值console.log(Number(false));// 布爾值console.log(Number(undefined));// undefinedconsole.log(Number(null));// null
復制代碼

2>.parseInt()函數:parseInt() 函數解析一個字符串參數,并返回一個指定基數的整數 。語法:parseInt(string, radix);。如下圖所示:

    console.log(parseInt("17", 8));console.log(parseInt("015", 10));console.log( parseInt("F", 16));
復制代碼

3>.parseFloat() 函數解析一個字符串參數并返回一個浮點數。該函數指定字符串中的首個字符是否是數字。如果是,則對字符串進行解析,直到到達數字的末端為止,然后以數字返回該數字,而不是作為字符串。

   console.log(parseFloat("3.14"));console.log(parseFloat("314e-2"));console.log( parseFloat("FF2"));
復制代碼

4>.通過 “-0”(減零)和“+”(取正)的方法,也可以達到類型轉換的效果。

    console.log('123'- 0);console.log(+ '456');
復制代碼

2、string(字符串)

(1)定義:JS中字符串類型用于表示文本數據。它是由0或多個16位Unicode字符組成的字符序列。字符串可以由雙引號(")或單引號(')表示。

(2)例如:

    var text1 = 'message';console.log(text1);console.log(text1.length);console.log(typeof text1);
復制代碼

(3)類型轉換(string)。

1>.String() 方法可把一個數據轉換為字符串,并返回結果。

    console.log(String(123));// "數字"console.log(String(true));// "布爾"console.log(String(undefined)); // "undefined"console.log(String(null)); // "null"
復制代碼

2>.通過“+''”的方法,也可以轉換為字符串。

    console.log(345 + '');// "數字"console.log(false + '');// "布爾"console.log(undefined + ''); // "undefined"console.log(null + ''); // "null"
復制代碼

(4)多行字符串的拼接:1>.兩個字符串之間用“+”拼接;2>.ES6語法,可用“``”進行拼接。

3、boolean(布爾值)

(1)定義:表示真偽的兩個特殊值,即true(真)和false(假)。PS:true不一定是1,而false也不一定是0.Boolean類型的值true和false是區分大小寫的,True和False(以及其他的混合大小寫形式)都不是Boolean值,只是標志符。

(2)例如:

    var genuine = true;console.log(genuine);console.log(typeof genuine);var sham = false;console.log(sham);console.log(typeof sham);
復制代碼

(3)類型轉換。

1>.Boolean()函數可以將任意類型的值轉為布爾值。

    console.log(Boolean(1));// "數字1"console.log(Boolean(0));// "數字0"console.log(Boolean('1')); // "字符串1"console.log(Boolean('0')); // "字符串0"console.log(Boolean( )); //空格console.log(Boolean('')); //空字符串console.log(Boolean(null)); //  "null"console.log(Boolean(undefined)); // "undefined"
復制代碼

2>.通過利用感嘆號取反的方法,也可以將任意類型的值轉為布爾值。(此方法不適用于空格)

    console.log(!!1);// "數字1"console.log(!!0);// "數字0"console.log(!!'1'); // "字符串1"console.log(!!'0'); // "字符串0"console.log(!!''); //空字符串console.log(!!null); //  "null"console.log(!!undefined); // "undefined"
復制代碼

4、null 和 undefined

(1)定義:undefined 表示“未定義”或不存在,即由于目前沒有定義,所以此處暫時沒有任何值。null 表示空值,即此處的值為空。

(2)例如:

    var message;console.log(message);console.log(typeof message);var text = null;console.log(text);console.log(typeof text);
復制代碼

(3)undefined和null的區別:javaScript高級程序設計(第三部): 在使用var聲明變量但未對其加以初始化時,這個變量的值就是undefined。 null值則是表示空對象指針。簡單理解起來就是說,undefined指沒有賦值的變量,是非對象;而null通過typeof打印出來是object,可以看做暫不打算賦值的對象。

6、參考資料

(1)MDN:JavaScript 數據類型和數據結構

(2)阮一峰: JavaScript 教程 數據類型。

(3)JavaScript高級程序設計(第三版)。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/276928.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/276928.shtml
英文地址,請注明出處:http://en.pswp.cn/news/276928.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

網絡虛擬化有幾種實現方式_停車場管理系統的防砸車功能有幾種方式?如何實現?...

原標題:停車場管理系統的防砸車功能有幾種方式?如何實現?前言0101正文一、壓力波防砸裝置也叫遇阻防砸,主要是安裝遇阻返回裝置,當道閘桿下落過程中接觸到車輛或者行人(接觸力度是可以調節的),裝置道閘桿底…

Socket 死連接詳解

當使用 Socket 進行通信時,由于各種不同的因素,都有可能導致死連接停留在服務器端,假如服務端需要處理的連接較多,就有可能造成服務器資源嚴重浪費,對此,本文將闡述其原理以及解決方法。 在寫 Socket 進行通…

[Swift]LeetCode1146. 快照數組 | Snapshot Array

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★?微信公眾號:山青詠芝(shanqingyongzhi)?博客園地址:山青詠芝(https://www.cnblogs.com/strengthen/)?GitHub地址&a…

aspnet中gridview文本只顯示開始幾個文本_軟網推薦:三個小軟件 輕松解決文本操作難題...

TXT文本操作在Windows操作中算是比較容易的事了,但簡單的文本操作也會遇到難題。例如,對于我們反復需要使用的多個信息,如果僅靠CtrlC和CtrlV來回復制、粘貼,效率會極低;再如,對于一些軟件組件中顯示的文本…

剛被IBM收購的紅帽,它的下一站是中國

前不久IBM斥資340億美元收購紅帽的新聞震驚了所有人,這個金額是互聯網上第三大交易,也是開源史上最大交易。這個收購背后到底有哪些目的?紅帽接下來會做什么?11月6日紅帽在北京舉辦紅帽論壇,向外界介紹了紅帽的想法。 …

驗證DetailsView插入數據不為空

驗證DetailsView插入數據不為空,在對象數據源ObjectDataScource(ChannelDS)的Inserting事件中寫如下代碼:protected void ChannelDS_Inserting(object sender, ObjectDataSourceMethodEventArgs e) { string name "";…

為什么onenote一直在加載_OneNote:科研筆記獨一無二的無敵利器

每個人都夢想著自己有超乎常人的記憶力,擁有者過目不忘的技能,從此走向人生巔峰……然而我們都不是那樣的人,在這個高速發展的數字新信息時代,進行有效的記憶,保存我們隨時到來的靈感等,這就需要我們進行筆…

WPF 實現 DataGrid/ListView 分頁控件

原文:WPF 實現 DataGrid/ListView 分頁控件在WPF中,通常會選用DataGrid/ListView進行數據展示,如果數據量不多,可以直接一個頁面顯示出來。如果數據量很大,2000條數據,一次性顯示在一個頁面中,不僅消耗資源…

Sql Server 中漢字處理排序規則,全角半角

--1. 為數據庫指定排序規則CREATEDATABASEdb COLLATE Chinese_PRC_CI_ASGOALTERDATABASEdb COLLATE Chinese_PRC_BINGO/**//**/--2. 為表中的列指定排序規則CREATETABLEtb(col1 varchar(10),col2 varchar(10) COLLATE Chinese_PRC_CI_AS)GOALTERTABLEtb ADDcol3 varchar(10) CO…

解決局域網設置固定IP后無法上網?

1.cmd中輸入ipconfig /all查看ip和dns的狀態 2.查看自動獲取的dns是什么,然后手動設置ip和dns時,和自動獲取的保持一樣即可 注解:設置后還是無法上網后主要檢查ip與dns是否設置錯誤. 轉載于:https://www.cnblogs.com/yanans/p/11301061.html

鼠標輸入

一、隱藏并捕捉光標 偏航角和俯仰角是通過鼠標移動獲得的,水平的移動影響偏航角,豎直的移動影響俯仰角。 原理是,存儲上一幀鼠標的位置,在當前幀中計算鼠標位置與上一幀的位置相差多少。如果水平/豎直差別越大,那么俯仰…

c#用canny算子做邊緣提取_機器視覺學習(三)邊緣檢測

一、邊緣檢測二、邊緣檢測流程三、Canny邊緣檢測前言邊緣檢測是圖像處理和計算機視覺中,尤其是特征提取中的一個研究領域。有許多方法用于邊緣檢測,它們的絕大部分可以劃分為兩類:基于一階導數首先計算邊緣強度, 通常用一階導數表…

一個有關Update類型的存儲過程的問題

CREATE PROCEDURE testupdateproc AS declare id int declare trandate datetime declare tranlimit int update test set trandatetrandate, tranlimittranlimit where test.idid GO 存儲過程語句如上,檢查語法是沒有問題的,但是在程序中執行時卻不行…

[20190805]在小程序中使用npm包

小程序是可以使用npm包的 1. 初始化npm;(在項目目錄下輸入) npm init 此時項目文件夾會創建一個配置信息的package.json文件 2. 手動新建node_modules文件夾;(在項目目錄下新建) 3. 安裝npm包; …

bindresult必須在哪個位置_手機視頻剪輯工具哪個好?清爽視頻編輯APP有人推薦嗎?...

作為一個非常喜歡旅游的人,每次出門在外都喜歡發各種照片,以前發照片覺得就能夠表達自己的狀態和心情,但是隨著時間的變化發現,身邊的人都開始喜歡發視頻了。此前在飛機上拍攝了一段覺得不錯的天空視頻,想要制作成短片…

[轉] 能ping通,但不能上網.

一、感染了病毒所致這種情況往往表現在打開IE時,在IE界面的左下框里提示:正在打開網頁,但老半天沒響應。在任務管理器里查看進程,(進入方法,把鼠標放在任務欄上,按右鍵—任務管理器—進程&#…

Gradle打包命令記錄

Gradle打包命令記錄第一種方式:gradle build執行后在在build/lib下生成war包第二種方式:gradle cleangradle --refresh-dependencies assemble

淺談ASP中Web頁面間的數據傳遞

【簡 介】  基于Web的動態網頁設計必會涉及到頁面間的數據傳遞,文章探討了ASP設計中常用的Web頁面間的數據傳遞方式,分析各種數據傳遞方式的使用方法、使用場合及優缺點,其都是設計階段選擇數據傳遞方式考慮的關鍵 往往使用動態網頁技術制作…

變頻電源出現故障了怎么辦,該如何去診斷呢

在變頻電源使用時間過長之后就會出現一些小故障,在出現這些小故障的時候很多人都不知道問題出在哪,今天中港揚盛的技術員教你如何的快速診斷變頻電源的故障方法。只有及時的發現,這樣就能夠有效地去解決變頻電源所出現的故障。下面就是變頻電…

無法訪問你試圖使用的功能所在的網絡位置_[steam實用工具]解決無法訪問商店/社區/好友列表的問題...

[steam實用工具]解決無法訪問商店/社區/好友列表的問題在我們使用steam的過程中,由于某些原因,在訪問商店/社區/好友列表時會被受到限制。針對這種情況,國內的大神些開發出了以下工具來解決我們訪問的難題。本文章中的軟件由“羽翼誠"大…