js之数据类型及类型转换
生活随笔
收集整理的這篇文章主要介紹了
js之数据类型及类型转换
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一.數據類型 js中的數據類型: 5種基礎類型:Undefined,Null,Boolean,Number,String 1種復合類型:Object(對象包括數組,函數等) 1.字符串String 字符串是一組由16位值組成的不可變的有序序列,由單引號或雙引號括起來的字符序列。 字符串的長度是其所包含的16位值的個數 字符串可以通過\反斜線來轉義 2.數字Number 數字是由整數和浮點數組成的 infinity表示無窮大的數,表示超出js所能表示的數字的上限 NaN表示非數字值,且NaN與其他任何值都不相等,包括它自身 3.布爾值Boolean 布爾值是有true和false兩個值組成的,且在js中true和false都是保留字。 4.Undefined Undefined是有undefined一個值組成的,通常用來表示未定義或’值的空缺’。 5.Null Null是由null一個值組成的,通常用來表示’空值’,對null執行typeof運算,會返回’object’,所以通常null一般被認為是一個空對象的引用。 6.對象Object 對象是是屬性的容器,其中每個屬性都有名字和值。對象類型包括對象,數組和函數。 二.類型轉換 顯示轉換: 使用String(), Number(), Boolean(), Object()分別對數據進行字符串,數字,布爾值,對象等的轉換,也稱為強制轉換,用法如下: String(123)//“123"
Number(‘123’)//123,
Number(‘fddas4234’)//NaN
Boolean(0)//false
Boolean(23)//true
Boolean(‘adsf’)//true
Object(3)//new Number(3) 而且除了null和undefined外,其他任何值都具有toString(),通常toString()方法和String()方法返回的結果一致! parseInt()和parseFloat()方法分別把數據轉換成整數和浮點數,parseInt()方法還可以接受第二個參數,表示轉換的基數: parseInt(11, 2)//3 而對于對象都繼承了兩個轉換方法,第一個是toString()方法,他返回: ({a:1}).toString()//“[object object]" 第二個方法是valueOf(),大多數情況下,valueOf()方法只是簡單的返回對象本身: ({a:1}).valueOf()// {a:1} 隱式轉換: 在js中,很多情況下部分運算符會對操作數進行隱式的類型轉換,這也是很多面試官喜歡在面試題中考大家的重點內容如: 1 + '1'//‘11'
2 - ‘1’ // 1
+'32'//32
!0//true
var a = 2; a++ //2
var a = 2; ++a//3
?
在js中,- * /會把操作數轉換成數字,但是請注意,+比較特殊,因為在js中,+號不僅是數字運算符,也是字符串連接符,所以在出現加號的時候就要根據具體情況去看結果了,如果+號的兩端都是數字,那么結果自然也是數字,同理兩端都是字符串,那么結果也同樣是字符串,如一端是數字,一端是字符串,那么就會把數字先轉換成字符串,在進行連接,所以結果是字符串:
1 + 1//2 ‘1’ + ’2’//’12' 1 + ‘1’ //‘11' ‘2’ + 1//‘21'同時還要注意,在多個數同時進行運算時,同樣要按照運算符的優先級順序進行計算: '12' + 1 * 2//‘122’ 12 + 1 + ‘2’//‘132' 在這里特別要注意的是相等性比較運算符==也會對操作數進行隱式轉換,而===則不會進行類型轉換: 0 == false//true '1' == 1//true 1 === ‘1’//false
?
類型檢測: typeof運算符: typeof 返回:undefined,boolean,number,string,object,function。6種值 在對null進行typeof操作是返回object,這是因為null一般被認為是一個空對象的引用,所以會返回object 在對數組進行typeof運算時同樣也會返回object,這在遇到需要對數組進行類型檢測的時候,顯然是無法使用typeof運算符的,這是我們可以使用對象的toString()方法: Object.prototype.toString.call([1,2])//"[object Array]" 這樣我們可以簡單封裝成一個檢測是否為數組的函數: function isArray(array) {return Object.prototype.toString.call(array).slice(8, 13) === 'Array'; } //isArray()方法返回true or false isArray(123)//false isArray([1,2])//true同樣的,也可以封裝成一個類型檢測函數: function type(array) {return Object.prototype.toString.call(array).match(/\w+/g)[1]; } //type()返回”String",”Number",”Object",”Function”,”Boolean”,”Null",”Undefined”,”Array”等具體的類型 type(NaN)//”Number" type(undefined)//"Undefined" type([1,2])//"Array" type(’sdfsd’)//”String" type(null)//”Null" type({a:2})//”Object" type(function(){})//”Function” type(true)//”Boolean”
instanceof運算符: instanceof運算符用于檢測所給數據是否屬于所給的類型: [1,2] instanceof Array //true 不過對于字符串,數字的原始值的檢測中instanceof總是返回false ‘dsa' instanceof String//false new String(123) instanceof String//true
當還有一種方式可以用.constructor檢測其構造函數的方式來進行類型檢測: "fdsff".constructor == String//true
轉載于:https://www.cnblogs.com/xjser/p/4962767.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的js之数据类型及类型转换的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux下源码安装git
- 下一篇: 【Java】Java运行cmd命令直接导