js中的数据类型
用typeof运算符可以确定一个值到底是什么类型
function f(){}
typeof f//"function"
null 和 undefined
Number(null)//0
Number(undefined)//NaN
null表示空值,即该处的值现在为空。undefined表示“未定义”。
推荐用法:
- 有一个对象object,现在不想给它赋值,把它设为null.
- 有一个非对象,现在不想赋值,把它设为undefined.
布尔值
6个falsy值
- undefined
- null
- false
- 0
- NaN
- 空字符串
所有的对象都是真值
把其他类型的值转为布尔类型
1. Boolean()函数
2. !!要转换的值
number
JavaScript 内部,所有数字都是以64位浮点数形式储存,即使整数也是如此。所以,1与1.0是相同的,是同一个数。
1===1.0//true
某些运算只有整数才能完成,此时 JavaScript 会自动把64位浮点数,转成32位整数,然后再进行运算。
特殊数值
-
正零和负零
-0 === +0 // true 0 === -0 // true 0 === +0 // true
-
NaN
NaN不是独立的数据类型,而是一个特殊数值,它的数据类型依然属于Number。 -
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。
本文为番茄小火锅的原创文章,版权归本人和饥人谷所有,转载请注明出处。