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

  

时间: 2024-08-02 08:56:11

js之数据类型及类型转换的相关文章

js的数据类型及类型转换

Js中的数据类型一共有六种,即number,string,boolean,underfine,null,object. 通常,我们判断变量的数据类型会用到typeof()方法. 数据的转换分为显式类型转换和隐式类型转换,我们经常用到的是将变量转换成字符串或数字.  一:显式类型转换: 1.转换成字符串时: toString() 1 var str= abc; 2 alert(str.toString()); 2.转换成数字时: (1)parseInt() 转换成整数,parseFloat()转换

JS的数据类型及转换(还是基础的东西)

朋友说我这是再自娱自乐,我只想说,你说的对????????!其实也不然,这算是我对自己的基础的一次彻底性的重新梳理以及闲的无聊,找点显得比较有意义的事情做罢了. 回归正题,在JS中,数据类型有哪些呢?看看下图 字符串.数字.布尔类型就不细说了,这些大家都懂,说一些大家关注度比较少的东西...... NULL和Undefined: NULL和Undefined一样都只有一个值,并且都是他们本身,但是有一点特别的有意思,那就是: 在W3C里事这样解释这两个东西的: 值 undefined 实际上是从

js中的数据类型转换(找相应的值小案例)

js中数据类型转换是一个很频繁会用到的一部分,那么在实际案例中会出现各种的数据类型,想要满足某些条件,那还必须要不同类型的数据进行转换,今天就通过一个小例子,来找出相对应的数据类型. 先看一个一个数组,数组里的内容很复杂,包含了所有的数据类型,然后我们通过不同的条件找到相对应的内容: var arr = [ '100px', 'abc'-6, [], -98765, 34, -2, 0, '300', , function(){alert(1);}, null, document, [], tr

javascript里的基础语法、数据类型以及类型转换

Js基础语法 在js里是区分大小写的 标识符:指变量,数组,函数等名字.定义标识其实就是取名字的过程. 硬性要求:指必需要满足的,否则无法通过编译 可不满足 硬性要求内容: 1.由数字,字母和下划线,以及$组成,但不能以数字开头,禁止使用ES里面的关键字和保留字(其实就是ES里内置的标识符). 2.区分大小写 软性要求内容:望文知意 命名法则 驼峰命名法:驼峰命名法分两种,大写是大驼峰(帕斯卡命名法),第一个单词首字母小写是小驼峰. 匈牙利命名法:就是以一个或者多个单词组成.前面还会加上一个固定

JS的数据类型

JS的数据类型大致分为两大块: 1.基本类型 2.引用类型 基本类型分为:number bolean string undefined null 引用类型分为:原生对象 内置对象 宿主对象

node.js对象数据类型

在这里复习下前端JS的数据类型:前端JS中的数据类型: 1.基本/原生/值类型 string.number.boolean.null.undefined 2.引用/对象类型    ES对象类型:String.Number.Boolean.Math.Date.RegExp.Object.Function.Error,Array,Global对象.    BOM对象类型:window.document.screen.history.location.navigator.event...    DOM

一、数据类型和运算符——5-基本数据类型的类型转换

5-基本数据类型的类型转换 1.自动类型转换 2.强制类型转换 3.表达式类型自动提升

引用数据类型的类型转换(学习笔记)

引用数据类型的类型转换 引用数据类型也能够做类型转换 (1)引用数据类型的转换是有条件,不能够随便转 (2)转换的条件是:只能够在有继承关系的类型间进行 (3)正因为只能沿着继承树进行转换,才有向上转型和向下转型的概念 向上转型 1.把子类对象交给父类的引用---自动类型转换 ★ 当我们拥有了一个父类引用的时候,就不能再简单的认为它指向父类对象了,它还有可能指向任意一个子类对象 父类的引用指向子类对象是没有问题的,不过只能看到对象身上来自于父类的属性和行为 向下转型 1.把父类对象交给子类引用-

JS中数据类型及原生对象简介

js是一种专门设计用来给网页增加交互性的编程语言,它的技术体系包含了一下几个方面: 1.JavaScript核心语言定义:包括数据类型,变量,常量,运算符,语句等. 2.原生对象和内置对象 3.浏览器对象BOM 4.文档对象类型DOM 5.事件处理模型 将js添加到文档中的方法有三种: 1.内嵌式 2.将js源文件通过<script>元素的src属性连接到XHTML文档中 3.脚本包含在XHTML事件处理属性中,例如onclick js的数据类型分为原始数据类型和引用数据类型: 一.原始数据类