前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >前端编码建议: JavaScript数据类型的特殊性

前端编码建议: JavaScript数据类型的特殊性

作者头像
玖柒的小窝
修改2021-10-09 14:17:37
2980
修改2021-10-09 14:17:37
举报
文章被收录于专栏:各类技术文章~

前端编码建议: JavaScript数据类型的特殊性

1.防止浮点数溢出

二进制的浮点数不能正确处理十进制的小数, 因此 0.1 + 0.2 不等于 0.3

num = 0.1 + 0.2; //0.30000000000004

建议使用 Decimal.js 库

2. 慎用 JavaScript 类型自动转换

3. 正确检测数据类型

使用 typeof 运算符返回一个用于识别其运算数类型的字符串。对于任何变量 来说,使用 typeof 运算符总是以字符串的形式返回以下6种类型之一:

  • number
  • string
  • boolean
  • object
  • function
  • undefined

typeof 检测 null 值时返回的是 object 而不是 null

代码语言:javascript
复制
function type (o) {
  return (o === null) ? "null" : (typeof o);
}
复制代码

注意: typeof 不能检测复杂的数据此类型,以及各种特殊用途的对象,比如 RegExp, Date,Math等

对于Object或Array,可以使用 constructor 属性, 该属性值引用的是原来构造该对象的函数。如果结合 typeof 运算符和 constructor 属性, 基本能够完成数据类型的检测。

value

typeof value

value.constructor

var value = 1

"number"

Number

var value = "a"

"string"

String

var value = true

"boolean"

Boolean

var value = {}

"object"

Object

var value = new Object()

"object"

Object

var value = []

"object"

Array

var value = new Array()

"object"

Array

var value = function() {}

"function"

Function

function className(){}

"object"

className

但是对于 undefined 和 null 特殊值不能使用constructor, JavaScript 会抛出异常。

对于直接量也不能使用 constructor 需要加上一个小括号

使用 toString() 检测对象类型是最安全、最准确的。 调用 toString()方法把对象转换成字符串, 然后通过检测字符串中是否包含数组所特有的标志字符可以确定对象的类型。

代码语言:javascript
复制
let test = "123"
console.log(Object.prototype.toString.call(test)); // [object String]
test = null
console.log(Object.prototype.toString.call(test)); // [object Null]
test = []
console.log(Object.prototype.toString.call(test)); // [object Array]

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前端编码建议: JavaScript数据类型的特殊性
    • 1.防止浮点数溢出
      • 2. 慎用 JavaScript 类型自动转换
        • 3. 正确检测数据类型
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档