javascript中6種基本數據類型詳解

来源:http://www.cnblogs.com/mybwhy/archive/2017/07/27/7245234.html
-Advertisement-
Play Games

javascript中有5中數據類型(也稱為基本數據類型):Undefined、Null、Boolean、Number和String,還有一種複雜數據類型——object,object本質是由一組鍵值對組成的。 typeof操作符:用於檢測給定變數的數據類型,對一個值試用typeof操作符可能返回下 ...


  1. javascript中有5中數據類型(也稱為基本數據類型):Undefined、Null、Boolean、Number和String,還有一種複雜數據類型——object,object本質是由一組鍵值對組成的。

  2. typeof操作符:用於檢測給定變數的數據類型,對一個值試用typeof操作符可能返回下列某個字元串: ♦ “undefined”——表示值未定義; ♦ “boolean”——表示值是布爾值 ;♦ “string”——表示值是字元; ♦ “number”——表示值是數值;  ♦ “object”——表示值是對象或null;♦“function”——表示值是函數;

  3. Undefined類型:Undefined類型只有一個值即undefined。對未初始化和未聲明的變數執行typeof操作符都會返回undefined,這就說明當我們對一個變數執行typeof操作符時我們不能立即確定這個變數是未初始化還是未聲明,因此顯示的初始化變數依然是明智的選擇,但不應該初始化為undefined。

  4. Null類型:Null類型是第二個只有一個值的數據類型即null。null值表示一個空指針對象,因此typeof操作符檢測null值時返回“object”。如果定義的變數將來用於保存對象那麼最好將該變數初始化為null而非其他值,這樣只要檢查null值就可以知道相應的變數是否已經保存了一個對象的引用。

         無論在什麼情況下都沒有必要把一個變數的值初始化為undefined,但對於意在保存對象的變數則應明確的初始化為null值。這樣做不僅體現null作為空對象指針的慣例,而且也有助於進一步區分null和undefined。

  5. Boolean類型:Boolean類型有兩個字面值:true和false。true不一定等於1,false不一定等於0。需要註意的是true和false是區分大小寫的,也就是說True和False(以及其他的混合大小寫形式)都不是Boolean值,只是標識符。在javascript中所有類型的值都有與這兩個Boolean值等價的值,要講一個值轉換為布爾值可以調用轉型函數Boolean()。 

    //這些轉換規則對理解流控制語句(如if語句)自動執行響應的Boolean轉換很重要
    var message="hello";
    if(message){
        alert("value is true");
    }
  6. 數據類型 轉換為true的值 轉換為false的值
    Boolean true false
    String 任何非空字元串 “”(空字元串)
    Number 任何非0數字 0和NaN
    Object 任何對象 null
    Undefined 不適用   undefined
  7. Number類型:

    //浮點數值
    var num1=1.1;
    var num2=0.1;
    var num3=.2; //有效,但不推薦

    由於保存浮點數值需要的空間是保存整數值的2倍因此javascript會不失時機 的將浮點數值轉換為整數數值。

    var num4=1.; //小數點後沒有數字——解析為1
    var num5=10.0;//整數——解析為10

    對於極大或極小的數值可以用e表示法,e表示法表示的數值等於e前面的數值乘以10的指數次冪,大小寫e均可。

    var num0=3.125E7;  //3.125*10的7次方,等於31250000
    var num5=3e-7;  //3*10的負7次方,0.0000003 
    //浮點數值計算會產生舍入誤差問題,這是使用基於IEEE754數值的浮點計算的通病,永遠不要測試某個特定的浮點數值。
    var a=0.1;
    var b=0.2;
    alert(a+b); //0.30000000000000004,特例

    2.數值範圍:javascript能夠表示的最小數值保存在Number.MIN_VALUE中,最大值保存在Number.MAX_VALUE中。如果某次計算的結果超出了javascript的數值範圍則這個數值將被自動轉換成特殊的Infinity值(負數則轉換為-Infinity(負無窮),整數則轉換為Infinity(正無窮))。正或負的Infinity值無法參與下一次的計算。使用isFinite()函數可以判斷數值是否在最小值與最大值之間。

    var result=Number.MAX_VALUE+0.1;
    alert(isFinite(result));  //false,超出了最大值
    console.log(Number.NEGATIVE_INFINITY); //-infinity
    console.log(Number.POSITIVE_INFINITY); //infinity

    3.NaN:即非數值(Not a Number)。任何涉及NaN的操作都會返回NaN,NaN與任何值都不相等。javascript定義了isNaN(),該函數接受一個參數,該參數可以是任何類型,函數在接收到一個參數後會嘗試將這個參數轉換為數值然後再判斷是否不是數值,註意判斷結果,不是數值返回true,是數值返回false。

    //對isNaN()函數進行個人習慣封裝
    function isNum(number){
        if(!isNaN(number)){
             return true;
        }  
        else{
             return false;  
        }
    }

     4.數值轉換:

    var num1=Number(true); //1
    var num2=Number(1.0); //1
    var num3=Number(""); //0
    var num4;
    Number(num4); //undefined
    var num5=Number(null); //0
    var num6=Number("00123abc"); //NaN
    var num7=Number("00123");   //123,前導0被忽略
    var num1=parseInt("1a2s3f"); //1
    var num2=parseInt("fda123"); //NaN
    var num3=parseInt("");       //NaN
    var num4=parseInt("22.5");   //22
    var num5=parseInt("070"); //56(八進位數),前導0不會被忽略
    //parseFloat()與parseInt()有2個區別,1.parseFloat()第一個小數點有效;2.parseFloat()始終不會忽略前導0。
    var num1=parseFloat("012.32.gsa"); //12.32
  8. String類型:數值、布爾值、對象、字元串值都有toString()方法,但null和undefined值沒有。在不知道要轉換的值是不是null或undefined的情況下,可以使用轉型函數String(),這個函數能將任何類型的值轉換為字元串,String()函數遵循下列轉換規則:
    /*
    * 如果值有toString()方法,則調用該方法並返回結果
    * 如果值是null,則返回“null”
    * 如果值是undefined,則返回“undefined”
    */
    alert(String(10));   //"10"
    alert(String(true)); //"true"
    alert(String(null)); //"null"
    var test;
    alert(String(test)); //"undefined"
  9. Object類型:在javascript中Object類型是所有其他實例的基礎。需要註意的是宿主對象(BOM和DOM對象)可能會也可能不會繼承Object。

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • " class="easyui-form" data-options="required:true,novalidate:true"> //提交的時候 function sumbformm(t) { var hisform = $(t).parents("form").eq(0); hisform.... ...
  • push():在數組後面加入元素,並返回數組的長度; unshift():在數組前面就如元素,並返回數組的長度; pop():刪除最後一個元素; var arr =[1,2,3,4,5] ; arr.push(6,7,8); console.log(arr);// push:在數組後面加入元素 結果 ...
  • http-equiv="X-UA-Compatible" 這是一個文檔相容模式的定義 Edge模式告訴IE以最高級 模式渲染文檔,也就是任何IE版本都以當前版本所支持的最高級標準模式渲染,避免版本升級造成的影響。 之前在開發項目的過程中,遇到過因為IE版本產生的相容問題。自己寫完項目在各個瀏覽器檢查 ...
  • 我以前一直以為只能用jquery的data()來獲取 哈哈 是我太弱了 直接用dataset就可以獲取到DOM元素的data屬性 好吧,還可以 用js的獲取屬性的方法getAttribute() ...
  • 1、父級div定義偽類:after和zoom 原理:IE8以上和非IE瀏覽器才支持:after,原理和方法2有點類似,zoom(IE轉有屬性)可解決ie6,ie7浮動問題 優點:瀏覽器支持好,不容易出現怪問題(目前:大型網站都有使用,如:騰迅,網易,新浪等等) 缺點:代碼多,不少初學者不理解原理,要 ...
  • 前言:一直想著整理一下關於前端的知識體系和資料,工作忙了些,擠擠總會有的,資料很多,就看你能不能耐下心堅持去學了,要多學多敲多想,祝你進步~學習之前首先要大概瞭解什麼是HTML ,CSS , JS:一句話概括:HTML 是骨骼, CSS是皮膚, JS只是夾在中間的神經組織!細說的話:HTML是由多種 ...
  • 首先我來介紹一下我遇到的問題 1.當有一個table表包含了<tr>標簽,<td>標簽,大致可以認為是這樣的: <tr> <td> @scene.ID </td> <td> @scene.SceneName </td> <td> @scene.QRUrl </td> <td> @scene.Loca ...
  • 拋物線運動就是:當拖拽結束的時候,我們讓當前的元素同時水平運動+垂直運動 在同樣的移動距離下,我們滑鼠移動的速度快,move方法觸發的次數少,相反移動的速度慢,move方法觸發的次數就多->瀏覽器對於每一次的move行為的觸發都是由一個最小時間的 通過觀察,我們發現一個事情:水平方向我們盒子在結束拖 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...