001-js数据类型

  1. Undefined类型
    Undefined类型只有一个值,计特殊的undefined。在使用var声明变量但未对其加以初始化时,这个变量的值就是undefined,例如
var msg;console.log(msg===undefined)//true
  1. Null类型
    Null类型是第二个只有一个值的数据类型,这个特殊的值是null,null值表示一个空对象指针,而这也正是使用typeof操作符检测null值时会返回"object"的原因
var car=null
console.log(car);//object

如果定义的变量准备再将来用于保存对象,那么做好将该变量初始化为null而不是其他值。这样一来,只要,只要直接检查null值就可以知道相应的变量是否已经保存了一个对象的引用。
实际上,undefined值是派生自null的值

console.log(null==undefined)//true
  1. Boolean类型
    Boolean类型只有两个字面值:true和false
  2. Number类型
    Number类型来表示整数和浮点数值
console.log(0.1+0.2)///0.30000000000000004

关于浮点数值计算会产生的舍入误差的问题,这是使用基于IEEE745数值的浮点计算的通病
Infinity正无穷,-Infinity负无穷,是不是位于最大和最小之间可以用isFinite()这个函数,如果位于会返回true

console.log(isFinite(Infinity*2))//false
console.log(isFinite(4546))//true

NaN即非数值,这个数值用于表示一个本来要返回的操作属未返回数值的情况,NaN与任何值都不相等,包括NaN本身

console.log(NaN==NaN)//false

isNaN()函数会帮我们确定这个参数是否“不是数值”,isNaN()会尝试将这个值转化为数值

console.log(isNaN("10"))//false
console.log(isNaN("blue"))//true
console.log(isNaN(true))//false

有三个函数可以把非数值转化为数值:Number()、ParseInt()、ParseFloat()

Number()函数的转化规则如下:

类型转化结果
null0
Booleantrue和false分别转化为1和0
undefinedNaN

如果是字符串,遵循下列规则:
字符串中只包含数值,者将其转化为十进制数值
字符串中包含有效的浮点数,则将其转化为相应的浮点数值
包含有效的十六进制数,者转化为相同大小的十进制数
字符串是空的,则将其转化为0
除上述格式之外的转化为NaN
如果是对象,则调用对象的valueOf()方法,然后依照前面的规则转化返回的值。如果转化的结果是NaN

ParseInt()
由于Number()函数在转化字符串时比较复杂而且不够合理,因此在处理整数的时候更常用的是pareseInt()函数,pareseInt()函数在转换字符串时,更多的是看其是否符合数值模式。它会忽略字符串前面的空格,直至找到第一个非空字符,如果第一个字符不是数值字符或者负号,pareseInt()就返回NaN;也就是说,用pareseInt()转化空字符串会返回NaN。如果第一个字符是数字支付,pareseInt()会继续解析第二个字符,直到解析完所有后续字符或者遇到了一个非数字字符。列如,“123blue”会转化为123
pareseInt()参数提供第二个参数:转化时使用的基数(即多少进制)

ParseFloat()
ParseFloat()也是从第一个字符开始解析每个字符 。而且也是一直解析到字符串末尾,或者解析到遇见一个无效的浮点数字为止。也就是说,字符串中的第一个小数点是有效的,而第二个小数点就是无效的了,因此它后面的字符串将被忽略。举例来说,“22.34.23”将会转化为22.34
ParseFloat()只能解析10进制

  1. String类型
    String类型用于表示0或多个16位Unicode字符组成的字符序列,可以由双引号或单引号表示
    任何字符串的长度都可以通过访问其length属性取得
console.log("javascript".length)//10

字符串是不可改变的,也就是说,字符串一旦创建,他的值就不能改变。要改变某个变量保存的字符串,首先要销毁原来的字符串,然后再用另一个包含新值的字符串填充该变量
数值、布尔值、对象和字符串值都有一个toSring()方法,该方法返回字符串的一个副本,但null和undefined没有这个方法,在调用toString()可以传递一个参数:输出数值的基数,可以输出二进制、八进制、十六进制

let num=10;console.log(num.toString(2))//"1010"

在不知道值是不是null或undefined的情况下可以使用转型函数String(),这个函数能够将任何类型的值转化为字符串

console.log(String(10))//"10"
console.log(String(true))//"true"
console.log(String(null))//"null"
console.log(String(undefined))//"undefined"
  1. Object类型
    对象就是一组数据和功能的集合。独享可以通过new操作符后跟要创建的对象类型的名称来创建。而创建Object类型的实例并为其添加属性或方法,就可以创建自定义的对象

Object的每个实例都具有下列属性和方法:

属性方法
constructor保存着用于创建当前对象的函数,构造函数
hasOwnproperty(propertyName)用于检查给定的属性在当前对象实例中(而不是在实例原型中)是否存在。其中,作为参数的属性名(propertyName)必须以字符串形式指定
isPrototypeOf(object)用于检查传入的对象是否是当前对象的原型
propertyIsEnumerable(propertyName)用于检查给定的属性是否能够使用for-in语句来枚举。与hasOwnProperty()方法一样,作为参数的属性名必须以字符串形式指定
toLocaleString()返回对象的字符串表示,该字符串与执行环境的地区对应。
toString()返回对象的字符串表示
valueOf()返会对象的字符串、数值或布尔值表示,通常与toString()方法的返回值相同

对象的constructor属性引用了该对象的构造函数.对于 Object 对象,该指针指向原始的 Object() 函数,常用于判断未知对象的类型

var obj = {};
console.log(obj.constructor)    //ƒ Object() { [native code] }
console.log(obj.constructor == Object)    //true

var arr = [];
console.log(arr.constructor)    //ƒ Array() { [native code] }
console.log(arr.constructor == Array)    //true

hasOwnproperty(propertyName)

var a={
	b:123
}
console.log(a.hasOwnProperty("b"))//true
console.log(a.hasOwnProperty("c"))//false
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值