JavaScript数据类型

原始类型

number string boolean null undefined symbol (ES6新增)

null == undefined  //ture`

NaN表示不是数字的值

原始类型的特点
  1. 值是不可变的 ,不能为原始类型直接添加属性或者方法
  2. 原始类型的变量之间的比较是值之间的比较
console.log(true == 1); //true

先把true转化为number 1

  1. 变量名和变量值都存储在栈内存中,变量之间简单赋值时,比如a = 1,现在要把a的值赋予b,就是在栈中开辟新内存,存入b ,a的值1;此后b的值改变不会影响a,因为栈内存中直接存储的是数据。

引用类型

object
  1. 值是可变的,可以为引用类型添加属性和方法。
  2. 引用类型之间的比较是引用的比较
  3. 引用类型的值存放在堆内存中,栈内存中保存的是引用对象名和对应的堆内存地址,所以引用对象之间的比较是引用的比较;对象之间简单赋值时,赋予的是数据在堆内存中的地址,所以两者之间无论谁的值发生改变,都会影响到对方

JavaScript中用于确定基本类型的三种方式

typeof运算符
      console.log(typeof 8); //number
      console.log(typeof "88"); //string
      console.log(typeof false); //boolean
      console.log(typeof ff); //function
      console.log(typeof undefined); //undefined
      console.log(typeof null); //object
      console.log(typeof a); //object

typeof null的值是object

instanceof运算符

instanceof运算符后面的数据类型一定是对象

alert(c instanceof Array) ---------------> true
alert(d instanceof Date) 
alert(f instanceof Function) ------------> true
alert(f instanceof function) ------------> false
object.prototype.toString.call()方法
alert(Object.prototype.toString.call(a) ===[object String]) -------> true;
alert(Object.prototype.toString.call(b) ===[object Number]) -------> true;
alert(Object.prototype.toString.call(c) ===[object Array]) -------> true;
alert(Object.prototype.toString.call(d) ===[object Date]) -------> true;
alert(Object.prototype.toString.call(e) ===[object Function]) -------> true;
alert(Object.prototype.toString.call(f) ===[object Function]) -------> true;
constructor

在继承时会报错 原型相关

数值转换

Number()

用于任何数据类型

Number转换规则
  1. 布尔值 true 1,false 0
  2. null 0
  3. undefined NaN
  4. 字符串:包含数值的字符都会转换为一个十进制数值,最前面的0自动忽略;浮点数值转换为相应的浮点数值;空字符串返回0;字符串包含初上情况之外的其他字符返回NaN
  5. 对象:调用valueOf()方法,按照以上规则返回,如果转换结果NaN,调用toString()方法,再按照转换字符串的规则转换
console.log(Number('1hello'));//NaN
console.log(Number('009.9'));//9.9
console.log(Number(''));//0
parseInt() parseFloat()

专门用于将字符串转换成数值
优先使用parseInt()方法
parseInt()接收第二个参数用于指定进制数
parseFloat()函数的工作方式跟parseInt相似,只解析十进制数字,不能指定底数

    console.log(parseInt('12hello'));//12
    console.log(parseInt(''));//NaN
    console.log(parseInt('2.8'));//2
    console.log(parseInt(0xa));//10
    // parseInt()接收第二个参数用于指定进制数,也可以省略
    console.log(parseInt('10',2));//2 按照2进制处理

    // parseFloat()函数的工作方式跟parseInt相似,
    // 只解析十进制数字,不能指定底数
    console.log(parseFloat('22.34.3'));//22.34
    console.log(parseFloat('0xA'));

转换为字符串

每个值都有的toString()方法

null和undefined没有此方法,不必传参,但是转换数值类型时,传入的参数是输出数值的基数

 console.log(num2.toString(8));//'14'
String()函数
规则
  1. 如果数值有toString()方法,调用该方法返回结果
  2. 如果值为null或者undefiend 返回 ‘null’ ,‘undefiend’

isFinite()

    isFinite()返回一个布尔值,表示某个值是否为正常的数值 
    isFinite(Infinity) //false 
    isFinite(-Infinity) // false 
    isFinite(NaN) // false
    isFinite(undefined) // false 
    isFinite(null) // true 
    isFinite(-1) // true
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值