JS中的数据类型和转换
一、JS中的数据类型
js中的数据类型可以分为五种:number 、string 、boolean、 underfine 、null。
number:数字类型 ,整型浮点型都包括。
string:字符串类型,右数字字母字符串以及标点符号组成,必须放在单引号或者双引号中。
boolean:布尔类型,只有true和false两种值。
underfine:未定义,一般指的是已经声明,但是没有赋值的变量,如var a;
null:空对象类型,var a = null,和var a=""有区别;
object:对象,对象就是把一些彼此相关的属性和方法集合在一起构成的一个数据实体,在js常见的有window,document,array等。
NaN:他是表示不是数字值的特殊值,可以理解为Number的一种特殊类型,只有当在js运算中发生数据类型转换时提示,isNaN()方法是特有的对数据进行判断的 ,如果是数字返回false,不是数字返回true。
二、数据类型转换
在js中数据类型转换一般分为两种,即强制类型转换和隐式类型转换(利用js弱变量类型转换)。
强制转换:
利用js提供的函数parseInt() ,parseFloat() ,Number(),Boolean()进行数据转换,顾名思义,前两个分别是对数据进行解析转换,前者是整数,后者是浮点数。他们解析的原则是从前往后进行解析,尽其所能。若存在有能识别的数字就解析,如果第一位就不是数字则返回NaN.Number则是对整体进行判断,是数字返回数字,否则NaN.Boolean()则是对是否存在和真假进行判断进行判断。
ParseInt():
parseInt("123");//123
parseInt("+123");//123
parseInt("-123");//123
parseInt("12.3元")//12
parseInt("abc");//NaN
parseInt([1,2])//1
parseInt([1,2,4])//1
parseInt(" ");//NaN
该方法还有基模式,可以把二进制、八进制、十六进制或其他任何进制的字符串转换成整数。基是由parseInt()方法的第二个参数指定的,所以要解析十六进制的值,对于含有前导的数则直接进行解析需如下调用:
parseInt("AA",16);//170
parseInt("10",2);//2
parseInt("10",8);//8
parseInt("10",10);//10
//含有前导
parseInt("0xAA")//170
//如果二进制数包含前导0,那么最好采用基数2,不然默认以十进制解析
parseInt("010"); //returns 10
parseInt("010",2);//2 parseInt("010", 8); //returns 8 parseInt("010", 10); //returns 10
parseInt(null)//NaN
ParseFloat():
parseFloat("123");//123
parseFloat("-123");//123
parseFloat("+123");//123
parseFloat("12.34");//12.34
parseFloat("12.35元")//12.35
parseFloat("12.23.122");//12.23
parseFloat("av");//NaN
parseFloat("0xAA");//0
parseFloat("0110");//110
parseFloat([1]);//1
parseFloat([2,3]);//2
parseFloat([]);//NaN
parseFloat(null)//NaN
Number():
alert(123);//123
Number("123");//123
Number("+123");//123
Number("12.3");//12.3
alert(12.3元);//false
Number(true);//1
Number("12.3.4");//NaN
Number(" ");//0
Number("abc");//NaN
Number([]);//0
Number([1]);//1
Number([1,2]);//NaN
Number(new Object());//NaN
Number(null);//0
Boolean():他不会对引号里面的数字进行自动进行转换。
Boolean(1) ;//true
Boolean(0);//false
Boolean("1");//true
Boolean("0");//true
Boolean("abc");//true
Boolean('');//false
Boolean(' ');//true
Boolean([])//true
Boolean([1])//true
Boolean(null)//false
而String()则是传入的所有数据类型转换为字符串。
//和toString()方法的区别是
typeof String(null)//String
typeof String(undefined)//String
隐式类型转换:
隐式类型转换和java中大不相同,在js中数据类型不严格,没有浮点和整型,这里的隐式类型转换指的是字符串和数值类型之间的转换,在进行字符串和数字之间进行减乘除取模运算或者进行比较运算时,他会自动把字符串转换为数字。转换数字的默认方法是调用Number(),进行加法运算则是将数字看成字符串进行拼接. var x = "123";
var y = 121;
alert(x+y);//"123121;
alert(x-y);//2
alert(x*y);//14883
alert(x/y);//1.016528256198346
alert(x%y);//2
alert(x>y);//true
alert(x==y);//false
alert("123a">y);//false诡异
js只一中弱类型的脚本语言,语法相对与java等高级编程语言来说不够严格,所以对于它的数据类型和之间的转换很容易混淆,以上仅是个体会,如有错误,欢迎指出!
JS中的数据类型和转换的更多相关文章
- js中的数据类型及其转换
Js中的数据类型 Js中的数据类型一共有六种,即number,string,boolean,underfine,null,object. 一,number Number数据类型指的是数字,可以为整型, ...
- js中的数据类型以及转换
Js中的数据类型 Js中的数据类型一共有六种,即number,string,boolean,underfine,null,object. 一,number Number数据类型指的是数字,可以为整型, ...
- JS中的数据类型及转换
js的六大类型 js中有六种数据类型,Boolean: 布尔类型 Number:数字(整数int,浮点数float ) String:字符串 Object:对象 (包含Array数组 ) 特殊数据类型 ...
- js中关于数据类型的转换
* 一.转化为数字*/console.log(‘123123’*1.0); /* 二.从一个值中提取另一中类型的值,并完成转化工作 */console.log(parseInt(‘1233zxhag’ ...
- js中的数据类型
JS中的数据类型: ——数字 (number)NaN ——字符串(string) ——布尔 (boolean)——函数 (function) 也是对象的一种 ——对象 (object) ...
- Javascript高级编程学习笔记(3)—— JS中的数据类型(1)
前一段时间由于事情比较多,所以笔记耽搁了一段时间,从这一篇开始我会尽快写完这个系列. 文章中有什么不足之处,还望各位大佬指出. JS中的数据类型 上一篇中我写了有关JS引入的Script标签相关的东西 ...
- Js中的数据类型--String
昼猫笔记--给你带来不一样的笔记 不止是笔记 更多的是思考 上一期咱们大概了解了下什么是JavaScript,想必大家也都知道 今天主要说下Js中的数据类型 在Js中一共分为六种数据类型 其中基本数据 ...
- 如何判断js中的数据类型?
js六大数据类型:number.string.object.Boolean.null.undefined string: 由单引号或双引号来说明,如"string" number: ...
- 如何判断js中的数据类型
如何判断js中的数据类型:typeof.instanceof. constructor. prototype方法比较 如何判断js中的类型呢,先举几个例子: var a = "iamstri ...
随机推荐
- 走进webpack(1)--环境拆分及模块化
初级的文章和demo已经基本完成了,代码也已经上传到了我的github上,如果你对webpack的使用并不是十分了解,那么建议你回头看下走近系列,里面包括了当前项目中使用频繁的插件,loader的讲解 ...
- python装饰器使用
看了不少python关于装饰器文章,觉得还挺实用,发贴来mark一下(以前做笔记总会长时间不看就忘记,放这里应该不会忘了吧 - -) 先来看一个简单的知识点: def a(): print(" ...
- Java多线程:ThreadLocal
一.ThreadLocal基础知识 ThreadLocal是线程的一个本地化对象,或者说是局部变量.当工作于多线程中的对象使用ThreadLocal维护变量时,ThreadLocal为每个使用该变量的 ...
- RedHat/Fedora/Centos 下bash 自动补全命令
本文转自:运维生存时间:http://www.ttlsa.com/linux/rhel- ... matically-function/ linuser :http://www.linuser.co ...
- 关于Unity中如何代码动态修改天空盒
在Unity中动态修改天空盒有两种方法: 一.为每个Texture建立天空盒材质球,需要更换时直接将对应材质球作为天空盒,缺点是建立的材质球太多 private void ChangeSkybox(M ...
- python 信号处理
linux开发中,通常会在进程中设置专门的信号处理方法,比如经常使用的CTRL+C,KILL等信号.如果你熟悉liunx编程,那么python等信号处理方法对你来说就很简单,下面的内容将主要介绍pyt ...
- 【Spring系列】spring mvc整合任务调度
一.在dispatcher-servlet.xml中增加定时任务扫描路径和其余配置信息 xmlns:task="http://www.springframework.org/schema/t ...
- 使用linux下的crontab定时任务跑定时脚本
使用linux下的crontab定时任务跑定时脚本 tags:定时任务 定时脚本 crontab linux定时脚本 linux 引言:应该有许多人曾经很好奇一些定时脚本是怎么做出来的.我们这次就来说 ...
- alpha冲刺第十天
一.合照 二.项目燃尽图 三.项目进展 之前卡住的注册无法插入数据的问题解决 可以呈现多条数据内容了,首页文章内容呈现,问答界面问题内容呈现 四.明日规划 很多没有完善的,后面还是要继续整改 五.问题 ...
- Oracle查询用户权限
Oracle查询用户权限 -- 确定角色的权限select * from role_tab_privs ; 包含了授予角色的对象权限select * from role_ro ...