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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

javascript-基本数据类型和转换

發布時間:2025/3/21 javascript 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 javascript-基本数据类型和转换 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  ECMAScript中有5種基本數據類型:Undefined、Null、Boolean、Number、String。還有1種復雜數據類型—Object,Object實質上是由一組無序的名值對(鍵值對)組成的。ECMAScript不支持任何創建自定義類型的機制。

  由于ECMAScript是松散型的,所以需要一種手段來檢測變量的數據類型,typeof就是具有這種功能的操作符。用typeof檢測變量可能返回以下某個字符串:

"undefined"變量未定義
"boolean"變量是布爾值
"string"變量是字符串
"number"變量是數值
"object"變量是對象或者null
"function"變量是函數

?

  從技術的角度講,函數在ECMAScript中是對象,不是一種數據類型。然而,函數有一些特殊的屬性,因此通過typeof來區分函數和其它對象是有必要的。

  Undefined類型只有一個值,就是特殊的undefined。在使用var聲明變量但未初始化時,這個變量的值就是undefined,如:

var a; alert(a == undefined); //true

  不過,包含undefined值的變量和尚未定義的變量不一樣,如:

var a; // 這個變量聲明之后默認取得了undefined值 // 下面這個變量并沒有聲明 // var balert(a); // "undefined" alert(b); // 產生錯誤

  然而對未聲明或者聲明沒有初始化的變量使用typeof都會返回undefined,如:

var a; // var b; alert(typeof a); // "undefined" alert(typeof b); // "undefined"

  Null類型也只有一個值,就是null。從邏輯的角度來看,null值表示一個空指針,所以用typeof檢測null值會返回"object",如:

var car = null; alert(typeof car); // "object"

  所以如果要定義變量來存放對象,最好將該變量初始化為null。實際上,undefined值是繼承自null值的,所以判斷它們的相等性會返回true:

alert(null == undefined); // true

  盡管null和undefined有這樣的關系,但它們用途是完全不同的,因為無論什么時候都沒有必要把一個變量的值顯示的設置為undefined,然而當定義一個還未保存對象的對象變量時,就應該將變量設置為null,這樣不僅可以體現null作為空對象的指針,還有能很好地區分null和undefined。

  Boolean類型有兩個字面值:true和false,但是ECMAScript中所有類型的值都能調用Boolean()函數轉換成Boolean類型的值,下表列出了各種數據類型對應的轉換規則:

數據類型轉換為true的值轉換為false的值
Booleantruefalse
String 任何非空字符串""空字符串
Number任何非零數字值0和NaN
Object任何對象null
Undefined/undefined

  Number類型分為整數和浮點數,整數可以用十進制,八進制或十六進制表示,如:

var num1 = 22; //十進制整數 var num2 = 070; //八進制的56 var num3 = 079; // 無效的八進制,解析為十進制79 var num4 = 08; //無效的八進制,解析為十進制8 var num5 = 0xA; //十六進制的10 var num6 = 0x1f; //十六進制的31

  但是八進制字面量在嚴格模式下是無效的,在進行算數計算時,所有的數值最終都會轉換為十進制數值。浮點數值必須包含一個小數點,如:

var floatNum1 = 1.1; var floatNum2 = .1; //有效,但不推薦 var floatNum3 = 1.; //小數點后面沒有數字,解析為1 var floatNum4 = 10.0; //整數,解析為10

  浮點數值的最高精度是17位小數,但在進行算數計算時精確度遠不如整數,例如:

var a = 0.1; var b = 0.2; var c = a + b; //c的值為0.30000000000000004

  NaN,即非數值,是一個特殊的Number值,NaN有兩個特點:任何和NaN操作的結果都會返回NaN,NaN與任何值都不相等,包括NaN。使用isNaN()函數可以判斷一個值是不是NaN,isNaN()在接收到一個參數時,會嘗試將這個值轉換為數值,任何不能轉換為數值的值都會返回true,如:

alert(isNaN(NaN)); //true alert(isNaN(10)); //false(10是一個數值) alert(isNaN("10")); //false(可以被轉換為數值10) alert(isNaN("abc")); //true(不能轉換為數值) alert(isNaN(true)); //false(可以轉換為數值1) var obj = {name:"zhangsan", age:"1"}; alert(isNaN(obj)); //true

  isNaN()也能轉換對象,對象調用isNaN()時,會首先調用對象的valueOf()方法,然后確定該方法的返回值是否可以轉換為數值,如果不能,則用這個返回值再調用toString()方法,再測試返回值。

  非數值轉換成數值的方法有三個:Number()、parseInt()、parseFloat()。Number()可以轉換任何數據類型的值,而parseInt()和parseFloat()只能轉換字符串。

  Number()函數有以下轉換規則:

    1.如果是Boolean值,true轉換為1,false轉換為0;

var num = Number(true); //1 var num2 = Number(false); //0

    2.如果是Number值,就和傳入的值一樣;

var num = Number(1); //1

    3.如果是null,轉換為0;

var num = Number(null); //0

    4.如果是undefined,轉換為NaN;

var num = Number(undefined); //NaN

    5.如果是String值,要分多種情況,如果是空字符串,則轉換為0;如果是純數字的字符串,則將其轉換為相對應的數值,如果字符串是數字且包含".",則將其轉換為對應的浮點數值(如果字符串最前面是0,會被忽略),如果字符串是有效的十六進制格式,會將其轉換為對應的十進制數值;如果字符串包含上述格式之外的字符,則轉換為NaN;如果字符串是對象,會首先調用對象的valueOf()方法,然后確定該方法的返回值是否可以轉換為數值,如果結果是NaN,則調用toString()方法,再測試返回值。

var num = Number("Hello World"); //NaN var num2 = Number(""); //0 var num3 = Number("01"); //1 var num4 = Number("01.1"); //1.1 var obj = {name:"zhangsan", age:"1"}; alert(Number(obj)); //NaN

  由于Number()在轉換字符串是比較復雜,所以轉換字符串常用parseInt()和parseFloat()。這兩個函數在轉換字符串時,會檢測該字符串是否符合數值模式,從第一個非空格字符開始解析,如果第一個字符不是數值或者負號,則返回NaN(包括空字符串)。如果第一個字符是字符串,則繼續解析后面的字符,直到解析完所有的字符或者遇到非數字字符。

  parseInt()能夠識別各種整數格式(十進制、八進制、十六進制),如果字符串以"0x"開頭且后跟數字字符,就會被解析為十六進制,如果以"0"開頭且后跟數字字符,則會被解析為八進制(ECMAScript5不識別八進制,會將前面的0忽略,解析為十進制)。

var num = parseInt("123Hello"); //123 var num2 = parseInt("");     //NaN var num3 = parseInt("0xA");   //10(十六進制) var num4 = parseInt("22.3"); //22 var num5 = parseInt("070"); //56(ECMAScript3八進制) 70(ECMAScript5十進制) var num6 = parseInt("23"); //23(十進制)

  為了解決兼容性問題,parseInt()提供第二個參數,以何種數值格式解析。

var num1 = parseInt("0xAF", 16); //175 var num2 = parseInt("AF", 16); //175,可以省略前面的"0x" var num3 = parseInt("10", 2); //2(二進制) var num3 = parseInt("10", 8); //8(八進制) var num3 = parseInt("10", 10); //10(十進制) var num3 = parseInt("10", 16); //16(十六進制)

  parseFloat()只識別第一個小數點,后面的小數點就無效了,同時parseFloat()只識別是十進制值,所以沒有第二個參數,別的格式數值會被解析為0。

var num = parseFloat("123Hello"); //123 var num = parseFloat("0xA"); //0 var num = parseFloat("12.1"); //12.1 var num = parseFloat("12.1.1"); //12.1 var num = parseFloat("023"); //23 var num = parseFloat("1.1e3"); //1100

  String類型值由若干個Unicode字符組成的字符序列構成,可以由單引號('')或者雙引號("")表示,但是左右引號必須匹配。

var str1 = "abc"; var str2 = 'abc';
var str3 = "abc'; //語法錯誤

  將一個值顯式轉換為字符串有兩種方法,toString()和String(),數值、布爾值、對象和字符串都有toString()方法和String()方法,而undefined和null只有String()方法,toString()的參數是轉換的進制格式。

var num = 10; alert(num.toString()); //"10" alert(num.toString(2)); //"1010" alert(num.toString(8)); //"12" alert(num.toString(10)); //"10" alert(num.toString(16)); //"A" alert(true.toString()); //"true" String(num); //"10" String(true); //"true" String(null); //"null" var num1; String(num1); //"undefined"

  

轉載于:https://www.cnblogs.com/huiTime/p/6545606.html

總結

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

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