美文网首页
饥人谷作业---JS 里的数据类型

饥人谷作业---JS 里的数据类型

作者: xiaoznz | 来源:发表于2018-07-11 16:53 被阅读0次

简单来说,js里面有七大数据类型,也就是number,string,boolean,symbol,null,undefined,object,在这七类中,前六类我们一般称为简单类型,而最后一类(object),我们称为复杂类型。

众所周知,js由Branden Eich发明,这位兄弟在设计js时,由于本人比较擅长scheme,所以当老板告诉他要写的跟Java语法类似,他的心态崩了。老兄花了十天时间就设计完了js,因此,存在许多逻辑上的bug,毕竟时间很短嘛,可以理解。接下来让我们对七大类型进行逐个研究和探讨:

1.Number

JavaScript 内部,所有数字都是以64位浮点数形式储存,即使整数也是如此。所以,1与1.0是相同的,是同一个数。根据国际标准 IEEE 754,JavaScript 浮点数的64个二进制位,从最左边开始,是这样组成的。

    第1位:符号位,0表示正数,1表示负数

    第2位到第12位(共11位):指数部分

    第13位到第64位(共52位):小数部分(即有效数字)

符号位决定了一个数的正负,指数部分决定了数值的大小,小数部分决定了数值的精度。

指数部分一共有11个二进制位,因此大小范围就是0到2047。IEEE 754 规定,如果指数部分的值在0到2047之间(不含两个端点),那么有效数字的第一位默认总是1,不保存在64位浮点数之中。也就是说,有效数字这时总是1.xx...xx的形式,其中xx..xx的部分保存在64位浮点数之中,最长可能为52位。因此,JavaScript 提供的有效数字最长为53个二进制位。

由于JavaScript的创立时候,Unicode编码还没有大行其道,于是,js有自己的一套运行体系,这就造成了小数运算会出现一定的问题。所以涉及到小数的时候,要特别小心,最好先化为整数。

js中表示数的方法很多:比如   0.1 可以写成 (.1),科学计数法表达时我们一般写成(2.1e2),他就等于210

二进制的表述方法:0b110(6)   十六进制0x11(17)   八进制011(9)

特别注意因为八进制以0开头的,所以保存电话号码的时候,最好要字符串"0575-74933445"

2.String

字符串就是()零个或多个排在一起的字符,放在单引号或双引号之中。(这两种都可以"abc" === 'abc')

那么我们遇到一些("  ,   ')这些符号时怎么办?我们可以采用转义符来解决。

如图

如果要用上转义符号自己呢?那就两次转义呗(\\)

字符串中,有时需要换行来写,总共有三种方法:

1.var a = "acs\

cscs"

2.var a = "acs" + 

"cscs"   (这种是我们推荐的)

3.var a = `acs

cscs`

3.Boolean

boolean的发明者是George Boole,这位兄弟的故事比较奇葩,有兴趣点这里George Boole

boolean类型比较少,只有两种,true 和 false

在表示这两种逻辑方式的时候,下列运算符会返回布尔值:

两元逻辑运算符: && (And),|| (Or)

前置逻辑运算符: ! (Not)

相等运算符:===,!==,==,!=

比较运算符:>,>=,<,<=

如果 JavaScript 预期某个位置应该是布尔值,会将该位置上现有的值自动转为布尔值

转换规则是除了下面六个值被转为false,其他值都视为true。

1.undefined    2.null  3.false    4.  0    5.NaN    6.""或''(空字符串)

4.Symbol(这个是ES6新增的,暂时不涉及)

5.null    6.undefined

这两位兄弟是js特色,其他都只有一个null

一般来说,对这二位有如下规定:

1.如果一个变量没有赋值 ---- undefined

2.如果有一个对象,但是我们目前不想赋值 ----- null

如果是一个非对象,那我们用 ----- undefined

7.Object

对象就是一组“键值对”(key-value)的集合,是一种无序的复合数据集合。

我们一般如此定义一个对象

特别说明,function和array也是对象的一种,他们是特殊的对象

有趣的是,每个我们定义的变量,自身会携带一个 __proto__ 属性指向 Object.prototype ,他叫做对象的原型,这个我们下次再说

有一点要记住,简单类型在内存中的存储都是键值对的形式存储的,而复杂类型存的键值对是一个地址,他指向堆内存的某个对象。我们可以把简单类型和复杂类型区分为士兵和兵团的区别,假设var a 是一个战场,我们可以派一个士兵(number),一辆坦克(string),一架飞机(Boolean),但是我们对于军团,则必须把军团打包成一个团,我们必须给他一个番号,然后把他部署在那里。js也是一样,遇到比较多的number,string这些的时候,就把他们打包成一个团,然后给这团一个番号(坐标),然后才能赋值

对对象中是否存在某元素 ,我们可以使用语法  "xxx" in object

将某个元素从对象中删去,我们可以用语法delete,用for(var key in Object) 来遍历数组

对这七大类型。我们可以用typeof函数来检验元素

特别值得注意的是 typeof null 的值为object,而typeof function 的值为function

相关文章

  • 饥人谷作业---JS 里的数据类型

    简单来说,js里面有七大数据类型,也就是number,string,boolean,symbol,null,und...

  • 饥人谷作业 --- 数据类型的转换

    上次我总结了js几大数据类型,现在我要写一篇这七大类型相互转换的文章。 1.Number 共计有三中吧正规方式,如...

  • JS事件:一道题的多种解法

    本文章著作权归饥人谷_Lyndon和饥人谷所有,转载请注明出处 >>> 引言 现在JS部分已经学到了事件,我发现很...

  • 饥人谷作业 -- html标签

    html标签汇总(目前实力有限,只能想到这么多) html5的标记 --- 接下来...

  • 饥人谷作业 --- git入门

    这里介绍三个语句 1.git init 如果你打算使用 Git 来对现有的项目进行管理,你只需要进入该项目目录并输...

  • 饥人谷作业 --- http介绍

    今天我要写一个有关http介绍的东西,那么首先我觉得有必要把我现阶段理解的http内容做一个总结: 超文本傳輸協定...

  • 2018-02-01第一节课

    饥人谷JS Bin 1. css animation html: css: 2. window.open html...

  • JS-学习资源

    饥人谷知乎前端学习指南132GitHub笔试面试题集锦饥人谷课件课堂内外一些前端小项目饥人谷 api饥人谷作品库G...

  • HTMLCollection vs. NodeList

    本文章著作权归饥人谷_Lyndon和饥人谷所有,转载请注明出处 >>> 引文 这篇博客起源于我对一道作业题的思考,...

  • 饥人谷作业 ---命令行

    以下是介绍一些命令行语句 ls : ls命令用于显示指定工作目录下之内容(列出目前工作目录所含之文件及子目录) ...

网友评论

      本文标题:饥人谷作业---JS 里的数据类型

      本文链接:https://www.haomeiwen.com/subject/nqbhpftx.html