JavaScript数据类型的介绍

本篇文章给大家带来的内容是关于javascript数据类型的详细介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

最近面试了三个开发,他们都没有说清楚JS的基本类型有哪些。而且往往错误的说了一些C语言的数据类型,例如int, float, double之类的数据类型。

无论什么语言,熟练掌握数据类型都是这门语言最根本的知识点

JS数据类型分为两类,一类是基本类型,他们有

NumberStringBooleanUndefinedNullSymbol

js的基本类型就这么几个,除此之外,其他的类型都是对象。

立即学习“Java免费学习笔记(深入)”;

Number类型

在JS没有整型,float,或者double类型的数值,所有数值统一叫做Number类型。

JS使用IEEE754格式表示整数和浮点数,一般来说整数占用了32位,而浮点数数占用64位。因为浮点数占用的内存空间是整数的两倍,所以js会适当的把浮点数转化为整数储存。

4.0 === 4 // true

登录后复制

数值类型都是有大小范围的

Number.MAX_VALUE  // 1.7976931348623157e+308Number.MIN_VALUE // 5e-324Number.MAX_SAFE_INTEGER // 9007199254740991Number.MIN_SAFE_INTEGER // -9007199254740991

登录后复制

浮点数一般都是计算结果不准确的,这不是JS的问题,所有语言中都有这个问题。

计算0.1 + 0.2 === 0.3这个结果永远是false。

要比较浮点数是否相等,可以采用Number.EPSILON, Number.EPSILON是一个非常小的数值,如果两个浮点数相减小于Number.EPSILON, 则可以为认为是相等。

Math.abs(0.1 + 0.2 - 0.3) < Number.EPSILON // true

登录后复制

Number类型中有三个比较特殊的兄弟

Infinity 当数值超过Number类型的最大值,他就会变成正无穷-Infinity 当数值类型小于Number类型的最小值,就会变成负无穷NaN NaN的意思是它不是一个数值,例如某个数值除以0,一般语言都会报错,但是js不会,而是该变量的值会变成NaN。

数值类型一旦变成这三个兄弟,就无法参与后续的数值运算。

String类型

从静态语言过来的同学,遇到字符串就会问个问题:请问你能装多少个字符串呢?

字符串傻傻一笑,说:自从我诞生以来,从来就没被装满过!

ECMAScript 2016 (ed. 7) established a maximum length of 2^53 – 1 elements. Previously, no maximum length was specified. In Firefox, strings have a maximum length of 230 – 2 (~1GB). In versions prior to Firefox 65, the maximum length was 228 – 1 (~256MB).  –MDN

Boolean

Boolean值很简单,就false和true两个值。但是很多人不能完全回答出,哪些值会被转换成false。

除了下面几个能够被转成false的值,其他都是true。

false''NaNundefined0, -0, +0null

登录后复制

undefined 和 null

undefined表示一个变量被定义了,但是没有被赋值。null表示这个变量根本没被定义。总之,无论是undefined和null,他们基本上都是不能使用的值。

null类型有个特别的作用。比如有个对象,有很多属性,这时候你想把这个变量给标记为可以被垃圾回收了,那么就可以把它的值设置为null。

最熟悉的陌生人:  对象

我曾认为对象在js中是最简单的,而实际上,是我太天真。

// 定义一个对象,so easyvar boy = {  name: 'wangduanduan'}

登录后复制

var boy = {}Object.defineProperty(boy, 'name', { writable: false, value: 'wdd'})boy.name = 'ddw' // 设置不会生效,boy.name的值还是wdd

登录后复制

对象的数据属性

数据属性 默认值 说明

configurabletrue表示这个属性能否用delete删除enumerabletrue表示这个属性能否通过for in 循环遍历writabletrue表示这个属性能否被修改valueundefined表示这个属性的数据值

如果调用Object.defineProperty没有指定configurable, enumerable, writable,那么他们的默认值都是false。

访问器属性

访问器属性就是get, set让你可以在读取或者写入值时,做一层拦截。

var man = {    _sex: 1}Object.defineProperty(man, 'sex', { set: function (v) {     this._sex = v === '男' ? 1 : 0 }, get: function () {     return this._sex === 1 ? "男" : "女" }})nam.sex // 男

登录后复制

想一想如果把上面的_sex改成sex会有什么问题?

// 这样写会有什么问题var man = {    sex: 1}Object.defineProperty(man, 'sex', { set: function (v) {     this.sex = v === '男' ? 1 : 0 }, get: function () {     return this.sex === 1 ? "男" : "女" }})

登录后复制

本篇文章到这里就已经全部结束了,更多其他精彩内容可以关注PHP中文网的JavaScript视频教程栏目!

以上就是JavaScript数据类型的介绍的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2732151.html

(0)
上一篇 2025年3月8日 00:38:37
下一篇 2025年3月6日 01:44:00

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • Javascript的this的用法详解

    本篇文章给大家带来的内容是关于javascript的this的用法详解,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 在理解javascript的this之前,首先先了解一下作用域。 作用域分为两种: 1、词法作用域:引擎…

    编程技术 2025年3月8日
    200
  • react的setSate的异步问题的分析

    本篇文章给大家带来的内容是关于react的setsate的异步问题的分析,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 在我们阅读文档的时候,大多都说react的setState是异步的,可是它真的是异步的吗?如果是,那我…

    编程技术 2025年3月8日
    200
  • es6-promise源码的分析

    本篇文章给大家带来的内容是关于es6-promise源码的分析,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 主要逻辑: 本质上还是回调函数那一套。通过_subscribers的判断完成异步和同步的区分。通过 resolv…

    编程技术 2025年3月8日
    200
  • Vue实现原理的简单介绍

    本篇文章给大家带来的内容是关于vue实现原理的简单介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 用了Vue也有两年时间了,一直以来都是只知其然,不知其所以然,为了能更好的使用Vue不被Vue所奴役,学习一下Vue底层…

    编程技术 2025年3月8日
    200
  • JavaScript中的var和let的区别(代码示例)

    var和let都用于javascript中的函数声明,它们之间的区别是,var是函数作用域,let是块作用域。 可以说,与let相比,用var声明的变量在整个程序中都是定义的。 举个例子会更清楚地说明这种区别,如下: var的例子: 输入:…

    2025年3月8日 编程技术
    200
  • javascript中对象的介绍(附代码)

    本篇文章给大家带来的内容是关于javascript中对象的介绍(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 JavaScript 中的所有事物都是对象,并且JavaScript允许自定义对象。 对象拥有属性与方…

    编程技术 2025年3月8日
    200
  • JavaScript实现递归算法的方法介绍

    本篇文章给大家带来的内容是关于javascript实现递归算法的方法介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 我们先来看一下定义。递归算法,是将问题转化为规模缩小的同类问题的子问题,每一个子问题都用一个同样的算法…

    2025年3月8日 编程技术
    200
  • jQuery的用法介绍(代码)

    本篇文章给大家带来的内容是关于jQuery的用法介绍(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 代码部分 window.jQuery=function(nodeOrSelector){ let nodes={}…

    编程技术 2025年3月8日
    200
  • promise是什么?怎么用?

    本篇文章给大家带来的内容是关于Laravel多态关联的介绍(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 promise是什么 官网解释 promise 表示一个异步操作的最终结果。 翻译  ==可以将promi…

    编程技术 2025年3月8日
    200
  • vue中axios请求的封装的介绍(代码)

    本篇文章给大家带来的内容是关于vue中axios请求的封装的介绍(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 1、发送请求模块目录 2、/api/url中存放的是每个模块的URL // 商品模块 product.…

    2025年3月8日
    200

发表回复

登录后才能评论