JavaScript的数据类型详解

来源:互联网 发布:自动铅笔 知乎 编辑:程序博客网 时间:2024/04/27 13:26
JavaScript的数据类型详解
基本类型:Number、String、Boolean、Null、Undefined
对象类型:object(包括Array、Function、Date、Json等)

typeof 操作符
检测当前变量的数据类型的方法,也就是typeof关键字.
通过typeof关键字,对这5种数据类型会返回下面的值(以字符串形式显示)
undefined ---------- 如果值未定义Undefined
boolean ---------- 如果这个值是布尔值Boolean
string ---------- 如果这个值是字符串String
number ---------- 如果这个值是数值类型Number
object ---------- 如果这个值是对象Objectnull
需要注意的是typeof null返回为object,因为特殊值null被认为是一个空的对象引用。
例:typeof null; //"object"
typeof 1; //"number"
typeof "1" //"string"

Null
Null类型是只有一个值的数据类型,这个特殊的值是null
null值表示一个空对象指针。只要意在保存对象的变量还没有真正保存对象,就应该明确地让该变量保存null值。而这也正是使用typeof操作符检测null时会返回object的原因。
往往用来表示意料之中的空,空对象不能添加自定义属性等东西。

Undefined
Undefined类型只有一个值,即特殊的undefined
在使用var声明变量但未对其加以初始化时,这个变量的值就是undefined
往往用来表示出乎意料的空,一般表示你写的程序有错误
实际上,undefined值是派生自null值的,因此ECMA-262规定对它们的相等性测试要返回true。
即console.log(undefined == null); //true

Boolean
该类型只有两个字面值:true和false。
这两个值与数字值不是一回事,因此true不一定等于1,而false也不一定等于0。
JavaScript中所有类型的值都有与这两个Boolean值等价的值。调用类型转换函数Boolean(),可将一个值转换为其对应的Boolean值。
var message = 'Hello World'; var messageAsBoolean = Boolean(message);
转换规则
数据类型转换为true的值转换为false的值BooleantruefalseString任何非空的字符串""(空字符串)Number任何非0数值(包括无穷大)0和NANObject任何对象nullUndefined不适用undefined

Number
这种类型用来表示整数和浮点数值(不区分两者),还有一种特殊的数值,即NaN(非数值 Not a Number)。
NaN
这个数值用于表示一个本来要返回数值的操作数未返回数值的情况(这样就不会抛出错误了)。例如,在其他编程语言中,任何数值除以0都会导致错误,从而停止代码执行。但在JavaScript中,任何数值除以0会返回NaN,因此不会影响其他代码的执行。
NaN本身有两个非同寻常的特点。
1.任何涉及NaN的操作(例如NaN/10)都会返回NaN。
2.NaN与任何值都不相等,包括NaN本身。例如,下面的代码会返回false。
alert(NaN == NaN); //false

String
var s = “nihao” //String类型用于表示由零或多个16位Unicode字符组成的字符序列,即字符串。
方法:
length方法:输出它的长度,空格也算长度
charAt()方法:输出()里下标处的字符

Object
Object本质上是由一组无序的名值对组成的。
object可以添加自定义属性 obj.abc = 123;也可以写成obj={“abc”:”123”}

JavaScript的数据类型的转换
转化数字方法
a.显性转化
Number(a)
空和空格都会转换成0,布尔值会变成1和0,null会变成0,函数、json、未定义和对象会变成NaN(not a number),特殊的数组如果为空或一个数据时会根据里面的数据像字符串一样去转,多个数据时变成NaN
parseInt
从左到右碰到非数字后将前面的输出(会认识一些特殊符号,如+-空格)
parseInt(b,10) 前面是数字,后面代表转为十进制
parseFloat
会保留1个小数点后面的部分
var b = ”175.23.56” 会变成175.23,只会看第一个小数点和第一个小数点后边的数字。
b.隐式类型转换
+ 除了数字加数字 其余的如数字和字符串相加 运算时都会转换为字符串的连接
- * / % 会让数字字符串和数字的运算结果转换成数字类型
++ -- 可以让数字字符串转换成数字
> < 会让字符串和数字的比较正确显示,但是两个字符串不行。
如:'10'>9和'10'>'9',字符串的比较是一位一位的比较,第一位如果比出来后面就不会再比较了。
! 取反,一个字符串或数字放在if判断里为真,所以取反会变成false,最后结果一定是布尔值
== 如果两边相同(即使不同类型,如:'2'和2),就相等
=== 会判断类型,如果类型不同即使相同则返回false
无论是哪种转换方法,如果无法转换就会返回NaN

逻辑与 &&
遇到false就返回
如都是ture返回最后一个
逻辑或 ||
遇到true就返回
如果都不满足时 返回最后一个
与的优先级大于或

JavaScript还提供了包装对象,如:
var n = new Number(123); // 123,生成了新的包装类型
var b = new Boolean(true); // true,生成了新的包装类型
var s = new String('str'); // 'str',生成了新的包装类型
虽然包装对象看上去和原来的值一模一样,显示出来也是一模一样,但他们的类型已经变为object了!所以,包装对象和原始值用===比较会返回false。
原创粉丝点击