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 ...
随机推荐
- 《Linux命令行与shell脚本编程大全》- 读书笔记3 - 理解shell
当用户登录终端的时候,通常会启动一个默认的交互式shell.系统究竟启动哪个shell,这取决于用户配置.一般这个shell都是/bin/shell.默认的系统shell(/bin/sh)用于系统sh ...
- Python上下文管理器
在Python中让自己创建的函数.类.对象支持with语句,就实现了上线文管理协议.我们经常使用with open(file, "a+") as f:这样的语句,无需手动调用f.c ...
- iOS CocoaPods一些特别的用法 指定版本、版本介绍、忽略警告
简介 介绍一些CocoaPods一些特别的用法 CocoaPods github地址 CocoaPods 官方地址 1. 指定第三方库版本 1. 固定版本 target 'MyApp' do use_ ...
- 19.C++-(=)赋值操作符、智能指针编写(详解)
(=)赋值操作符 编译器为每个类默认重载了(=)赋值操作符 默认的(=)赋值操作符仅完成浅拷贝 默认的赋值操作符和默认的拷贝构造函数有相同的存在意义 (=)赋值操作符注意事项 首先要判断两个操作数是否 ...
- 启动tomcat时jmx port被占用
一.问题描述 今天一来公司,在IntelliJ IDEA 中启动Tomcat服务器时就出现了如下图所示的错误: 错误: 代理抛出异常错误: java.rmi.server.ExportExceptio ...
- CodeBlocks使用介绍
CodeBlocks对单个文件没法调试,需要建工程后才能调试,所以使用CodeBlocks必须先建工程. 一.如何用CodeBlocks建工程文件. 选择File->New->Projec ...
- 咬碎STL空间配置器
STL空间配置器 一.开场白: 给我的感觉就是,了解是空间配置器的功能,是那么的明了:在看原理,我还是很开心:接下来是360度大转变: 那么长的变量或者函数命名.那么多的宏.不爽,不过,遇上我这种二货 ...
- 关于tomcat部署应用的三种方式
关于tomcat部署应用虽然不是一个经常的操作,因为一旦选择了一种部署方式,我们其他的应用就会不经大脑的使用这种既定模式, 如果不使用这种部署方式,但是对于其他的部署方式不是很清楚的话,很容易抓瞎,所 ...
- Vim 中文社区:期待你的加入
我们的愿景 Vim 中文社区一直比较零散,缺少凝聚力,现有的一些群经常也是水的可以的,讨论各种无关紧要的内容,于是导致很大一部分人,将这些群丢入了群助手,渐渐地他们也淡出了 vim 中文社区. 而我理 ...
- react基础篇入门组件
讲述一下React: 1.声明式设计-React采用声明范式,可以轻松描述应用 2.高效-React通过DOM模型,最大限度的减少dom的交互 3.灵活-React可以与已知的库或框架很好的配合 4. ...