一些关于数据类型的基本概念

变量:松散类型变量。可保存任何值,未经初始化的变量会保存undefind。
var message=”hi”;
初始化的过程只是给它一个值,并不会标记字符串类型。

数据类型:undefined(如果这个值未定义)、Boolean、string、number、object(如果这个值是对象或者null)、function。

一、undefined举例:
1、var a;
alert(a);//undefined
alert(b);//Uncaught ReferenceError: b is not defined

2、var a;
alert(typeof a);//undefined
alert(typeof b);//undefined

二、null举例:
null:表示一个空对象指针。
var a=null;
alert(typeof a);//object

如果定义的变量准备在将来用于保存对象,最好将该变量初始化null。这样直接检测null值就可以知道相应的变量是否已经保存了一个对象的引用。
if(a!==null){
//对car对象执行某些操作
}

alert(null==undefined);//true
!!注意:只要意在保存对象的变量还没有真正的保存对象,明确让该对象保存null,不仅可以体现空对象指针的惯例,也可以区分null和undefined。

三、Boolean举例:(不看书不知道原来Boolean都是这么用的

var message=”我最可爱”;
var messageAsBoolean=Boolean(message);

⚠️!!!字符串message转换成了Boolean值,该值保存在messageAsBoolean变量中,可以对任何数据类型的值调用Boolean(),并且总会返回一个Boolean值,取决于转换值的数据类型以及实际值。

转换成true的有:string(任何非空字符串)、number(任何非0数字包括无穷大)、object(任何对象)、undefined(n/a)。
转换成false的有:string(空字符串”“)、number(0和NaN)、objec(null)、undefined(undefined)。

var message=”hi”;
if(message){
alert(“hello”);
}
这里message被自动转换成了对应的Boolean值,我们要确切的知道在控制语句中使用的是什么变量,错误的使用一个对象还不是一个Boolean值,就有可能彻底改变应用程序的流程。

四、number举例:
关于进制和数值范围(infinity/-infinity如果返回这两个接下来是无法计算的)忽略(懒得看哈哈)

浮点数值:包含小数点。(1./10.0这种都解析为整数,不推荐.1这种写法)

对于极大或者极小的数值用e表示法表示的浮点数值表示。(最高精度17位哦,算术计算时精确度远不如整数~)
var floatNum=3.546e7;//3.546 * 10^7
var floatNum=0.3e-7;//0.0000003
⚠️0.1+0.2结果不是0.3,而是0.3000000000000004。(我有朋友在计算金额的时候遇到过这个问题!)
so,不要像以下这样判断啦~
if(a+b==0.3){
alert(“hi”);
}

NAN(Not a Number):非数值是一个特殊数值。(这句话逻辑真奇怪)
表示一个应该返回数值的操作未返回数值(这样就不会抛错啦),返回NaN是不会影响其他代码执行的。
⚠️NaN的两个特点:1、NaN/10返回NaN;2、NaN与任何值都不相等,包括自己。
alert(NaN==NaN);//false

isNaN(a),该参数可以是 任何类型(包括对象,基于对象调用会先调用对象的typeof(),如果不能返回数值,会再调用toString()测试返回值),函数帮我们定义这个参数a是否”不是数值”。
不能转数值的都为true,反之false。
alert(isNaN(NaN))//true
alert(isNaN(10))//false,10是数值
alert(isNaN(“10”))//false,可转为数值10
alert(isNaN(“blue”))//true,不能转数值
alert(isNaN(“true”))//false,可转为1

三种数值转换:number()可用于任何数据类型(参数是对象参照isNaN())、parseInt()字符串转成数值(可识别转换所有进制为十进制)、parseFloat()字符串转成数值(只解析十进制值,16进制始终转换成0)。
转换的结果就两种,数值(转完都是十进制)和NaN。
number(undefined);//NaN
number(“0011”);//11,这是8进制数。
number(“hi”);//NaN
number(“”);//0
number(true);//1
number(0xf);//15,16进制数。

parseInt(“123blue”);//123
parseInt(“blue555”);//NaN,第一个不是数字或字符或者负号,直接返回NaN
parseInt(“”);//NaN(这里好容易弄混,我总觉得是0)
parseInt(“15.5”);//15
parseInt(“070”);//70

第二个参数明确多少进制
parseInt(“AF”,16);//175
parseInt(“AF”);//NaN

parseFloat(“0xA”);//0
parseFloat(“10.00”);//10
parseFloat(“3.125e7”);//31250000
parseFloat(“0908.9”);//908.9
parseFloat(“90.8.9”);//90.8

五、string:
var text=”javascript”;
alert(text.length);//10

数值、布尔值、对象、字符串值都有toString(),null和undefined没有。
var num=10;
alert(num.toString());//10
alert(num.toString(8));//12
alert(num.toString(16));//”a”

不确定要转换的值是否为null或undefined的情况下,使用String()能将任何类型值转为字符串。
var a=null;
var b;
var c=true;
alert(String(a));//null
alert(String(a));//undefined
alert(String(a));//true

六、object
new obj=new object();
仅仅创建object的实例并没什么用处,关键在于理解思想,object类型是他所有实例的基础,object类型所具有的任何属性和方法也同样存在于更具体的对象中。
toLocaleString():返回对象的字符串表示,该字符串与执行环境的地区对应。
toString():返回对象的字符串表示。
valueof():
constructor:
hasOwnProperty():
……,原型继承看完书再完来补。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值