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

简单来说,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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,723评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,485评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,998评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,323评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,355评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,079评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,389评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,019评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,519评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,971评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,100评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,738评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,293评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,289评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,517评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,547评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,834评论 2 345

推荐阅读更多精彩内容

  • 第2章 基本语法 2.1 概述 基本句法和变量 语句 JavaScript程序的执行单位为行(line),也就是一...
    悟名先生阅读 4,118评论 0 13
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 27,422评论 1 45
  • 0. 写在前面 当你开始工作时,你不是在给你自己写代码,而是为后来人写代码。 —— Nichloas C. Zak...
    康斌阅读 5,297评论 1 42
  • 时光荏苒如白驹过隙,四年的时间一转眼就结束了,拎着行李箱在校园到处奔走办理入学手续的情景仿佛就在昨天。四年大学生活...
    见月明星稀阅读 339评论 1 2
  • 假如生活欺骗了你咋办 痴心难改篡写复兴经典 铁心不变寻觅珍爱无害 纵有悲情乌云总会散开 假如现实生活欺骗了你 请不...
    铁娃娇涯阅读 167评论 3 3