范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

JavaScript中常用数据类型,你知道几个?

  本文首发自「慕课网」,想了解更多IT干货内容,程序员圈内热闻,欢迎关注!
  作者| 慕课网精英讲师 Lison
  这篇文章我们了解一下 JavaScript 中现有的八个数据类型,当然这并不是 JavaScript 中的所有数据类型,而是现在版本的 TypeScript 支持的基本类型,在学习基础类型之前,我们先来看下如何为一个变量指定类型:
  为一个变量指定类型的语法是使用"变量: 类型"的形式,如下: let num: number = 123
  如果你没有为这个变量指定类型,编译器会自动根据你赋给这个变量的值来推断这个变量的类型: let num = 123 num = "abc" // error 不能将类型""123""分配给类型"number"
  当我们给 num 赋值为123但没有指定类型时,编译器推断出了num 的类型为number 数值类型,所以当给num 再赋值为字符串"abc"时,就会报错。
  这里还有一点要注意,就是 number 和 Number 的区别:TS中指定类型的时候要用 number ,这个是TypeScript的类型关键字。而Number 为JavaScript的原生构造函数,用它来创建数值类型的值,它俩是不一样的。包括你后面见到的string、boolean等都是TypeScript的类型关键字,不是JavaScript语法,这点要区分开。接下来我们来看下,这八个JS中你见过的类型。2.1.1 布尔类型
  类型为布尔类型的变量的值只能是 true 或 false,如下: let bool: boolean = false; bool = true; bool = 123; // error 不能将类型"123"分配给类型"boolean"
  当然了,赋给 bool 的值也可以是一个计算之后结果是布尔值的表达式,比如: let bool: boolean = !!0 console.log(bool) // false2.1.2 数值类型
  TypeScript 和 JavaScript 一样,所有数字都是浮点数,所以只有一个 number 类型,而没有int 或者float 类型。而且 TypeScript 还支持 ES6 中新增的二进制和八进制数字字面量,所以 TypeScript 中共支持二、八、十和十六四种进制的数值。let num: number; num = 123; num = "123"; // error 不能将类型"123"分配给类型"number" num = 0b1111011; //  二进制的123 num = 0o173; // 八进制的123 num = 0x7b; // 十六进制的1232.1.3 字符串
  字符串类型中你可以使用单引号和双引号包裹内容,但是可能你使用的 tslint 规则会对引号进行检测,使用单引号还是双引号可以在 tslint 规则里配置。你还可以使用 ES6 语法——模板字符串,拼接变量和字符串更为方便。 let str: string = "Lison"; str = "Li"; const first = "Lison"; const last = "Li"; str = `${first} ${last}`; console.log(str) // 打印结果为:Lison Li
  另外还有个和字符串相关的类型: 字符串字面量类型 。即把一个字符串字面量作为一种类型,比如上面的字符串"Lison",当你把一个变量指定为这个字符串类型的时候,就不能再赋值为其他字符串值了,如: let str: "Lison" str = "haha" // error 不能将类型""haha""分配给类型""Lison""2.1.4 数组
  在 TypeScript 中有两种定义数组的方式: let list1: number[] = [1, 2, 3]; let list2: Array = [1, 2, 3];
  第一种形式通过 number[] 的形式来指定这个类型元素均为number类型的数组类型,这种写法是推荐的写法,当然你也可以使用第二种写法。注意,这两种写法中的number 指定的是数组元素的类型,你也可以在这里将数组的元素指定为任意类型。如果你要指定一个数组里的元素既可以是数值也可以是字符串,那么你可以使用这种方式:number|string[] ,这种方式我们在后面学习联合类型的时候会讲到。
  当你使用第二种形式定义时,tslint 可能会警告让你使用第一种形式定义,如果你就是想用第二种形式,可以通过在 tslint.json 的 rules 中加入 "array-type": [false] 关闭 tslint 对这条的检测。
  后面我们讲接口的时候,还会讲到数组的一个特殊类型:ReadonlyArray,即只读数组。 2.1.5 null 和 undefined
  null 和 undefined 有一些共同特点,所以我们放在一起讲。说它们有共同特点,是因为在 JavaScript 中,undefined 和 null 是两个基本数据类型。在 TypeScript 中,这两者都有各自的类型即 undefined 和 null,也就是说它们既是实际的值,也是类型,来看实际例子: let u: undefined = undefined;// 这里可能会报一个tslint的错误:Unnecessary initialization to "undefined",就是不能给一个值赋undefined,但我们知道这是可以的,所以如果你的代码规范想让这种代码合理化,可以配置tslint,将"no-unnecessary-initializer"设为false即可 let n: null = null;
  默认情况下 undefined 和 null 可以赋值给任意类型的值,也就是说你可以把 undefined 赋值给 void 类型,也可以赋值给 number 类型。当你在 tsconfig.json 的"compilerOptions"里设置了 "strictNullChecks": true 时,那必须严格对待。undefined 和 null 将只能赋值给它们自身和 void 类型,void类型我们后面会学习。2.1.6 object
  object 在 JS 中是引用类型,它和 JS 中的其他基本类型不一样,像 number、string、boolean、undefined、null 这些都是基本类型,这些类型的变量存的是他们的值,而 object 类型的变量存的是引用,看个简单的例子: let strInit = "abc"; let strClone = strInit; strClone = "efg"; console.log(strInit); // "abc"  let objInit = { a: "aa" }; let objClone = objInit; console.log(objClone) // {a:"aa"} objInit.a = "bb"; console.log(objClone); // { a: "bb" }
  通过例子可以看出,我们修改 objInit 时,objClone 也被修改了,是因为 objClone 保存的是 objInit 的引用,实际上 objInit 和 objClone 是同一个对象。
  当我们希望一个变量或者函数的参数的类型是一个对象的时候,使用这个类型,比如: let obj: object obj = { name: "Lison" } obj = 123 // error 不能将类型"123"分配给类型"object"
  这里有一点要注意了,你可能会想到给 obj 指定类型为 object 对象类型,然后给它赋值一个对象,后面通过属性访问操作符访问这个对象的某个属性,实际操作一下你就会发现会报错: let obj: object obj = { name: "Lison" } console.log(obj.name) // error 类型"object"上不存在属性"name"
  这里报错说类型 object 上没有 name 这个属性。如果你想要达到这种需求你应该使用我们后面章节要讲到的接口,那 object 类型适合什么时候使用呢?我们前面说了,当你希望一个值必须是对象而不是数值等类型时,比如我们定义一个函数,参数必须是对象,这个时候就用到object类型了: function getKeys (obj: object) {     return Object.keys(obj) // 会以列表的形式返回obj中的值 } getKeys({ a: "a" }) // ["a"] getKeys(123) // error 类型"123"的参数不能赋给类型"object"的参数
  这里你要明白object类型的使用。 2.1.6 symbol
  Symbol 是 ES6 加入的新的基础数据类型,因为它的知识比较多。 本节小结
  本篇文章我们总结了八个在JavaScript中我们就见过的数据类型,它们是:布尔类型、数值类型、字符串、数组、null、undefined、object以及ES6中新增的symbol。在TypeScript中它们都有对应的类型关键字,对应关系为: 布尔类型:boolean 数值类型:number 字符串类型:string 数组:Array或type[] 对象类型:object Symbol类型:symbol null和undefined:null 和 undefined,这个比较特殊,它们自身即是类型
  这些类型是基础,我们后面的高级类型很多都是它们的组合或者变形,所以一定要把这些基础先学会。
  欢迎关注「慕课网」,发现更多IT圈优质内容,分享干货知识,帮助你成为更好的程序员!

新赛季低薪高能的六大球星,库兹马逆流而上,布朗物超所值天下熙熙,皆为利来。天下嚷嚷,皆为利往。这句谚语同样适用于NBA舞台。在物欲横流的商业联盟,一切都以利益为出发点落脚点。在追逐高薪的时代,上千万的大合同比比皆是,同时,毒瘤合同垃圾短道世界杯李文龙率队夺5000米接力铜牌,中国队1金1铜,荷兰4金北京时间11月7日消息,20222023赛季国际滑联短道速滑世界杯美国盐湖城站落下帷幕。最后一个比赛日,由李孔超李文龙刘冠逸和钟宇晨组成的中国队在男子5000米接力拼得一枚宝贵的铜两个月房子跌了80多万,业主讨要说法,开发商强硬表态2022年不到两个月就要结束了。你觉得这三年比往年快多了吗?至于原因,大家都知道,毕竟这三年家里花了很多时间。俗话说,年底不买房,一年又忙,我不知道今年每个人的目标都实现了吗?然而视频云上微宣讲刷屏!连山永和掀起学习宣传贯彻党的二十大精神热潮视频加载中云上微宣讲刷屏!连山永和掀起学习宣传贯彻党的二十大精神热潮近期,连山壮族瑶族自治县永和镇新时代文明实践所打破线下宣讲的局限性,创新理论宣传宣讲形式,组建以各行业各领域优秀女报评论在深化上做文章在有效上下功夫论学习贯彻党的二十大精神党的二十大就新时代新征程党和国家事业发展制定了大政方针和战略部署,是我们党团结带领人民全面建设社会主义现代化国家全面推进中华民族伟大复兴的政治宣言和行动纲领。党有号召,妇联即行动。非凡十年国企篇章第三篇章两个一以贯之实现系统性重塑,国企独特制度优势更加彰显小新说党的十八大以来,以习近平同志为核心的党中央高度重视国资国企工作。习近平总书记站在党和国家工作大局的高度,就国有企业改革发展和党的建设发表一系列重要讲话作出一系列重要指示和重大逆转!爵士四虎8022,乔治348,西部格局巨变,伦纳德最新消息北京时间2022年11月7日,今日NBA比赛,5胜4负的快船主场迎战7胜3负的爵士,快船首发雷吉曼恩乔治莫里斯祖巴茨,爵士首发康利克拉克森比斯利马尔卡宁奥利尼克。第一节比赛,克拉克NBA骑士双枪给詹姆斯上一课北京时间11月7日凌晨,面对家乡球队,勒布朗詹姆斯却未能带领湖人拿下胜利,反倒是被骑士双枪上了一课。这场NBA常规赛,以骑士客场114比100战胜湖人而告终。骑士的多诺万米切尔堪称哈姆威少连续第四场发挥出色但纳恩ampampamp瑞安等角色球员没给帮助直播吧11月7日讯今日NBA常规赛,湖人100114不敌骑士,遭遇两连败。湖人主帅哈姆赛后接受了采访。哈姆先是称赞了威少的发挥,他表示今日是威少连续第四场打出了非凡的表现。过去四场媒体曝欧文要退役,既然你打碎我的碗,那我就把锅给砸了篮网球员欧文刚打了没几场比赛,又再度因为社交媒体上的一些言论引起了巨大的争议,还惹到了一些不该惹的人物,再加上媒体的添油加醋。如今的欧文已经成为了NBA里人见人的球员,哪怕是搭上首日产时光胶囊单价1899,1分钟成交破百万,疯狂之下谁在买单?富人带头,普通人跟上。人在积累一定财富后,对于长寿这件事情从不马虎。双11预售过后,营养健康品行业的局势已经初显明朗。京东跨境补剂热销品牌第一由日本Bioagen科技摘获,即便单价
轻轻松松过每一天,快乐又自在的秘诀都在这里了朋友们总是说,为什么你总是那么开心?我说,因为我简单呀。l简单则不累。你是不是做一件事情,总是会想很多很多,这一件事情还没有做,就已经在你的脑海里面跑了100圈,你说能不累吗?一直石家庄标志正太饭店重新迎客正太饭店建成于1907年,是石家庄古一代历史的见证,与当时的正太铁路大石桥见证了石家庄的发展,同时正太饭店也是当时最繁华的饭店之一,中华民国时期曾接待过孙中山蒋介石等军政大员。19金秋周末游,入手风行游艇的好时机,你必须知道这些!国庆长假刚走,假期综合症还没缓过来,相信大家已经在期待着下一个小长假了。何必再等下一个国庆?金秋周末,来一次说走就走的户外出行吧!避开人潮拥挤的高铁火车,躲开任性晚点的飞机,更拒绝如果可以,我们一起回梦开始的地方故乡林州红旗渠如果可以,我们一起回林州不要拿那些所谓的理想不要为那些所谓的快节奏打乱生活就一起回在我熟悉的家乡,带你领略山清水秀大峡谷认识每一条街道都能叫出名字每一个邻居都很和蔼可亲想打个麻将,国庆节最想去哪里?缅怀先烈,致敬英雄你们国庆节去了哪里?我去了烈士陵园。我相信很多人国庆节第一时间想要去的地方,可能是某个城市某个旅游景点或者是回家。我呢去了离我最近烈士陵园去看了离我最近的革命遗址。其实我很早以前就新华全媒新疆罗布淖尔湿地百鸟翔集美景如画这几天,在新疆巴音郭楞蒙古自治州尉犁县罗布淖尔国家湿地公园,成群的白鹭鸬鹚天鹅在湿地公园湖泊中游弋,塔里木河水胡杨沙漠蓝天与候鸟相互映衬,形成一幅美轮美奂的生态画卷。随着连年生态输做人靠人品,相处靠真诚活着,为人一场,没什么,没有性格是不可能的,缺少什么,不能缺少真诚。只有靠性格做人,才能留好名,只有真诚待人,才能得到真情。什么是性格?性格是做人的基础,性格是做人的修养。性格体现漂亮又治愈的福建小岛,不起眼的角落都好美,路人住下养老幸福秋日生活打卡季慢下来的时光中,有着惬意的生活,幸福感也会提升。多少人梦寐以求的,不过是在一处安静的小地方,度过晚年生活,周围是美景和家人相伴,养老的日子,会变得十分快乐。福建有个漂与雪牡丹江有关的一些情绪与雪牡丹江有关的一些情绪黄东风雪一定落下来了,初场就这样肆意暴雪为这个冬天开路,定又漫天银白完达山寂静无声,牡丹江还没有封冻雪夜里江水缓慢而坚定地流动着把疫病缠身的虎年推向极冷我江我来说句公道话鲁先生有错,男童家庭有罪南京掌掴男童事件事出有因,如果我们一味地指责,那是我们的不对,我们需要了解事情的真相以及来龙去脉,那么你的观点也许会有所改变。一事情的起因事情的起因并不复杂,两个幼儿园的小朋友抢夺一定要去爱那个给你情绪价值的人最好的爱情关系是什么?就如同一千个人眼中就有一千个哈姆雷特。爱情的种种定义,只有当事人才知道其中的辛酸苦辣。可不管最好的爱情是什么模样。我们都应该学会在一段爱情里保持自我。去爱一个