【日常记录】JS 里的数据类型

js中的数据类型

JS中的数据类型
用typeof运算符可以确定一个值到底是什么类型

function f(){}
typeof f//"function"

null 和 undefined

Number(null)//0
Number(undefined)//NaN

null表示空值,即该处的值现在为空。undefined表示“未定义”。
推荐用法:

  1. 有一个对象object,现在不想给它赋值,把它设为null.
  2. 有一个非对象,现在不想赋值,把它设为undefined.

布尔值

6个falsy值

 - undefined
 - null
 - false
 - 0
 - NaN
 - 空字符串

所有的对象都是真值

把其他类型的值转为布尔类型

 1. Boolean()函数
 2. !!要转换的值

number

JavaScript 内部,所有数字都是以64位浮点数形式储存,即使整数也是如此。所以,1与1.0是相同的,是同一个数。

1===1.0//true

某些运算只有整数才能完成,此时 JavaScript 会自动把64位浮点数,转成32位整数,然后再进行运算。

特殊数值

  1. 正零和负零

    -0 === +0 // true
    0 === -0 // true
    0 === +0 // true
    
  2. NaN
    NaN不是独立的数据类型,而是一个特殊数值,它的数据类型依然属于Number。

  3. Infinity 无穷

    0 * Infinity // NaN
    

string

每个字符在JS内部都是以16位(2字节)的utf-16格式进行储存的。
由于JS对utf-16的支持不完整,只支持两个字节的字符,所以JS返回的字符串长度很有可能不正确。
Base64转码
将无法打印出来的字符打印出来
btoa()将任意值转换为base64格式
atob()将base64格式的再转换回去
非ASCII码的字符要先通过encodeURIcomponent()转码

object

对象就是一组“键值对”(key-value)的集合,是一种无序的复合数据集合。

  • 对象的所有键名都是字符串(ES6 又引入了 Symbol 值也可以作为键名)。
  • 如果键名是数值,会被自动转为字符串。
  • 如果键名不符合标识名的条件,且也不是数字,则必须加上引号,否则会报错。
  • 对象的每一个键名又称为“属性”(property),它的“键值”可以是任何数据类型。

如果不同的变量名指向同一个对象,那么它们都是这个对象的引用,也就是说指向同一个内存地址。修改其中一个变量,会影响到其他所有变量。

in 运算符

  • 检查对象是否包含某个属性,如果包含就返回true,否则返回false。
  • 不能识别哪些属性是对象自身的,哪些属性是继承的。
  • 可以使用对象的hasOwnProperty方法判断一下,是否为对象自身的属性。

for…in循环

  • 遍历对象所有可遍历(enumerable)的属性,会跳过不可遍历的属性。
  • 不仅遍历对象自身的属性,还遍历继承的属性。

函数

  • 如果同一个函数被多次声明,后面的声明就会覆盖前面的声明。
  • JavaScript语言将函数看作一种值,函数只是一个可以执行的值,此外并无特殊之处。
  • 注意函数名的提升有时会有不好的影响

数组

  • 数组(array)是按次序排列的一组值。每个值的位置都有编号(从0开始),整个数组用方括号表示。
  • 清空数组的一个有效方法,就是将length属性设为0。

本文为番茄小火锅的原创文章,版权归本人和饥人谷所有,转载请注明出处。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值