一.数据类型
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

  

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

  1. 剑指前端(前端入门笔记系列)—— JS基本数据类型及其类型转换

    基本数据类型 ECMAScript中有5中简单数据类型性(也称为基本数据类型):Undefined.Null.Boolean.Number和String,还有一种复杂数据类型——Object,Obje ...

  2. js | JavaScript中数据类型转换总结

    转载 在js中,数据类型转换分为显式数据类型转换和隐式数据类型转换. 1, 显式数据类型转换 a:转数字: 1)Number转换: 代码: var a = “123”; a = Number(a); ...

  3. JS基本数据类型&流程控制

    JS基本数据类型 number     -----  数值 boolean    -----  布尔值 string     -----  字符串 [x,y] -------数组 undefined  ...

  4. Python--前端基础之JavaScript(JS的引入方式,JS的变量、常量和标识符,JS的数据类型,运算符,流程控制,JavaScript的对象)

    JavaScript介绍 JavaScript是运行在浏览器端的脚步语言,JavaScript主要解决的是前端与用户交互的问题,包括使用交互与数据交互. JavaScript是浏览器解释执行的,前端脚 ...

  5. 【Python系统学习02】数据类型与类型转换

    一.数据类型 字符串 整数 浮点数 [补充中...] 1.字符串 str 字符串:英文string,简写str. name = '小石头:' print(name,'2019', '12', '24' ...

  6. 2 JavaScript输出&字面量&变量&操作符&语句&标识符和关键字&字符集&语句&数据类型与类型转换

    JS输出: JavaScript没有任何打印或者输出的函数,但是可以用不同的方式输出数据 window.alert():弹出警告框 document.write():写入文档 innerHTML:写入 ...

  7. 02-JS中的数据类型及类型转换

    02-JS中的数据类型及类型转换 一.数据类型 JS中的值,无论是字面量还是变量,都有明确的类型. (一)概述 1.基本类型5种 number 数字类型 string 字符串类型 boolean 布尔 ...

  8. JavaScript知识 一、JS的数据类型

    一.JS的数据类型 1.基本类型 JS共有5大基本类型,分别是: 1)Undefined.他只有一个值:undefined.如果一个变量被定义但是没有给他赋值,那么这个时候系统会默认给这个变量赋值为u ...

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

    js是一种专门设计用来给网页增加交互性的编程语言,它的技术体系包含了一下几个方面: 1.JavaScript核心语言定义:包括数据类型,变量,常量,运算符,语句等. 2.原生对象和内置对象 3.浏览器 ...

随机推荐

  1. Python游戏《外星人入侵》来了~

    在游戏<外星人入侵>中,玩家控制着一艘最初出现在屏幕底部中央的飞船.玩家可以使用箭头键左右移动飞船,还可使用空格键进行射击.游戏开始时,一群外星人出现在天空中,他们在屏幕中向下移动.玩家的 ...

  2. JVM虚拟机内存模型以及GC机制

    JAVA堆的描述如下: 内存由 Perm 和 Heap 组成. 其中 Heap = {Old + NEW = { Eden , from, to } } JVM内存模型中分两大块,一块是 NEW Ge ...

  3. 5 -- Hibernate的基本用法 --4 9 其他常用的配置属性

    Hibernate其他常用的配置属性: ⊙ hibernate.show_sql : 是否在控制台输出Hibernate持久化操作底层所使用的SQL语句.只能为true和false两个值. ⊙ hib ...

  4. mysql性能监控qps,tps,iops

    qps 每秒处理的查询数tps 每秒处理的事务数IOPS,每秒磁盘进行的I/O操作次数 给个方法或者思路,用啥工具或者命令,如何看,值是多少属于正常范围之内呢? Information from we ...

  5. oracle nvl,having的用法

    select oi.order_id,opl.payment_no,opl.back_no, oi.commit_time, oi.receive_mobile, oi.receive_user, n ...

  6. setTag,getTage复用

    radioButtons = new RadioButton[rgMain.getChildCount()]; //遍历RadioGroupfor (int i = 0; i < radioBu ...

  7. 教你在windows下安装使用配置vim+gcc[转]

    转自http://blog.163.com/lixiangqiu_9202/blog/static/535750372012461190722/ 一直在使用linux,但有时也会去虚拟机里的winxp ...

  8. Android学习之位图BitMap

    BitMap代表一张位图,扩展名可以是.bmp或者.dib.位图是Windows标准格式图形文件,它将图像定义为由点(像素)组成,每个点可以由多种色彩表示,包括2.4.8.16.24和32位色彩.例如 ...

  9. FastCGI在nginx中的参数

    FastCGI参数 fastcgi主要用于http调用外部解释器的接口,采用c/s结构,可以将http服务器和脚本解析器分开,同时在脚本解析服务器上启动一个或者多个脚本解析守护进程.当HTTP服务器每 ...

  10. ogg 12c OGG-01163

    数据同步报错: 2017-07-03 12:44:36 ERROR OGG-01163 Oracle GoldenGate Delivery for Oracle, rora_t1.prm: Bad ...