您的位置:首页 > Web前端 > JavaScript

关于JS数据类型的一些知识点

2018-03-16 15:01 721 查看
一、数组
1.使用delete 运算符 可以删除数组中的元素,但是数组的长度不会改变
2.数组是通过数字进行索引的,但是也可以包含键值和属性,比如 var a = []; a ["foo"] = "bar";访问a.foo或者a["foo]都可以访问到“bar”,但是不算在数组长度里,a.length 的结果是0。当这个键值可以被强制转换为数字类型时,就表示数组长度了,例如: a["12"]=11;那么a.length=12。
3.类数组可以转换为真正的数组,通过数组工具来实现,例如concat(),slice()
二、字符串
字符串可以“借用”大部分数组的方法
三、数字
1.在书写上,var a = 0.42和var a= .42都是对的,甚至有的人鼓励像后者那样写,同理42.0写作42.也是没问题,但不常见
2.toFixed()方法用来指定显示几位小数,toPrecision()用来指定有效数位
3.JS支持八进制、十六进制、二进制,但分写需要用0x、0o,0b来标示,大写字母也可以
4.在处理小数的时候,会出现问题,例如0.1+0.2=0.30000000000000004,这不是JS特有的,是二进制浮点数的通病,解决方法有很多,可以用toFixed先精确一下小数位再计算,或者用机器精度Number.EPSILON(2^-52)来比较,差的绝对值小于机器精度就可视为相等
4.Number.MAX_VALUE是1.798e+308
   Number.MIN_VALUE是5e-324(极小的正数)
   Number.MAX_SAFE_VALUE是2^53-1
   Number.MIN_SAFE_VALUE是-(2^53-1)
5.void 是一个运算符 ,表达式 void ** 可以返回一个undefined值
6.NaN 表示不是一个有效的数字,但仍然为number类型,并且NaN是一个非自反的值,NaN!=NaN,要判断一个变量是否为NaN,不能用==或者===判断,应该用Number.isNaN()方法(这是一个ES6方法,也存在window.isNaN()方法,但这个方法有bug,对字符串使用,也会返回true)
7.无穷数和零值。Infinity和-Infinity,0和-0
①Infinity/Infinity的结果是NaN
②加法和减法运算不会出现负零
③-0字符串化会变成“0”
④“-0”转化为数字-0
⑤-0 === 0 为true,但0>-0为false
8.为了解决6和7的问题,可以用ES6的Object.is()来判断两个值是否绝对相等,但最好只在这种特殊情况使用这个方法,因为==和===更高效
9.值复制和引用复制(完全取决于值的类型,JS中变量没有类型,值才有!)
①对于基本数据类型,应用值复制
②对于复合值,即对象或数组,应用引用复制,变量对于复合值,只是引用,不能持有!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: