JS【详解】数据类型 (含数据类型检测 typeof、 数值 Number、字符串 String、布尔值 Boolean、null 、undefined,Symbol,对象 Object)

JavaScript 中的数据按存储方式的不同,分为值类型和引用类型。

  • 值类型(6种):变量中存储的数据的值 —— 数值、字符串、布尔值、null 、undefined,Symbol

  • 引用类型(1种):变量中存储的是数据的引用地址—— 对象 Object

    • 函数是特殊的引用类型,因为函数引用的地址指向的内容不是一个数值,而是一段可执行代码。

数据类型检测 typeof

参数返回值
数值number
字符串string
布尔型boolean
undefinedundefined
nullobject
Symbol 数据symbol
NaNnumber
Infinitynumber
函数function
class类function
数组等对象object

数值 Number

let n = 1
typeof n // "number"
  • 严格模式中,禁止使用0开头的数字表示法
  • 数值的原型是 Number 对象
Number 对象的方法功能
Number.isNaN()判断是否为NaN
Number.isInteger()判断是否为整数
Number.isFinite()判断是否为有限数值
Number.toFixed( 小数点位数 )四舍五入
  • 指数表示法
    e 后面的数字是 10 的指数
2e+3; // 2000

NaN

运算失败时会返回 NaN

console.log("abc" / 18);  // 结果是 NaN

NaN的数据类型也是数值,但表示Not a Number,非数值。

  • 只要算术运算中存在一个NaN,整个运算就会失败,并返回NaN

    > 1 + 2 + NaN;
    NaN
    
  • Undefined和任何数值计算的结果为NaN。

  • NaN 与任何值都不相等,包括 NaN 本身。

判断是否为可计算的数字

数据类型为数值,且不是NaN

function isNumber(value) {
  return typeof value==='number' && !Number.isNaN(value);
}

【实战】数值格式化

let num = 3.145;

// 保留两位小数 -- 不会改变原数据
num.toFixed(2); // 3.15

// 上舍入取整(ceil 天花板) -- 不会改变原数据
Math.ceil(num); // 4

// 下舍入取整(floor 地板) -- 不会改变原数据
Math.floor(num); // 3

字符串 String

typeof 'abc'  // string

https://blog.csdn.net/weixin_41192489/article/details/140371785

布尔值 Boolean

只有 2 个值

  • true 真
  • false 假
typeof true // boolean

空值 Null

只有 1 个值 null,表示一个空指针对象

typeof null  // "object"

null 的使用场景

// 给变量赋初始值(不确定未来变量的数据类型时使用)
let a = null;

// 获取指定DOM元素对象失败(页面上没有指定的DOM元素时),会得到 null
document.querySelector("#id");

// 正则表达式匹配失败时,会得到 null
"test".match(/a/);

null 的运算特点

  • 数值运算时,相当于 0
  • 布尔运算时,相当于 false
  • 字符串合并时,相当于 ‘null’
10 + null // 得到  10
1 * null  // 得到  0
!null;    // 得到  true
"value: " + null;  //得到 "value: null"  

未定义 Undefined

只有 1 个值 undefined,表示变量未定义

typeof undefined   // "undefined"

undefined的使用场景

// 只声明但无初始值的变量,值为 undefined
let a;

// 访问对象中不存在的属性,得到 undefined
let me = { name: "朝阳" };
let age = me.age; // age 会被赋值 undefined

// 无返回值的函数调用后的返回值为 undefined
function foo() {}
console.log(foo()); // undefined

// 未传值的形参是 undefined 
function foo(param1, param2, param3) {
  console.log(param3);
}
foo(1, 2); // undefined

唯一值 Symbol

ES6 新增语法,详见
https://blog.csdn.net/weixin_41192489/article/details/139954197

对象 Object

https://blog.csdn.net/weixin_41192489/article/details/140379356

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

朝阳39

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值