JS 几种数据类型及其转换

ECMAScript 标准定义了 7 种数据类型: Number;String;Boolean;Symbol;Null;Undefined;Object 。通常,数值、字符串、布尔值、undefined和null这五种类型,合称为简单类型的值,即它们是最基本的数据类型,不能再细分了。对象则称为复杂类型的值,因为一个对象往往是多个简单类型的值的合成,可以看作是一个存放各种值的容器。(Symbol 和 object 类型,本文暂不涉及。)

1、number(数值)

(1)定义:根据 ECMAScript 标准,JavaScript 中只有一种数字类型:基于 IEEE 754 标准的双精度 64 位二进制格式的值。它并没有为整数给出一种特定的类型。简单来说,JS中的所有数字都是以64位浮点数形式储存,即使整数也是如此。PS:NaN,即非数值(Not a Number)是一个特殊的值,用于表示一个本来要返回数值的操作数未返回值得情况,设计此值的目的是防止出现抛出错误,导致代码停止执行。NaN与任何值都不相等,包括其本身。

(2)例如:

    var num1 = 10; //十进制console.log(num1);console.log(typeof num1);var num2 = 070; //八进制console.log(num2);console.log(typeof num2);var num3 = 0xA; //十六进制console.log(num3);console.log(typeof num3);
复制代码

(3)类型转换(number):

1>.Number()函数:Number() 函数把对象的值转换为数字。如果参数无法被转换为数字,则返回 NaN。如下图所示:

    console.log(Number(123));// 数字console.log(Number('123'));// 包含数字的字符串console.log(Number('123abc'));// 不含数字的字符串console.log(Number(''));// 特殊:空字符串console.log(Number(true));// 布尔值console.log(Number(false));// 布尔值console.log(Number(undefined));// undefinedconsole.log(Number(null));// null
复制代码

2>.parseInt()函数:parseInt() 函数解析一个字符串参数,并返回一个指定基数的整数 。语法:parseInt(string, radix);。如下图所示:

    console.log(parseInt("17", 8));console.log(parseInt("015", 10));console.log( parseInt("F", 16));
复制代码

3>.parseFloat() 函数解析一个字符串参数并返回一个浮点数。该函数指定字符串中的首个字符是否是数字。如果是,则对字符串进行解析,直到到达数字的末端为止,然后以数字返回该数字,而不是作为字符串。

   console.log(parseFloat("3.14"));console.log(parseFloat("314e-2"));console.log( parseFloat("FF2"));
复制代码

4>.通过 “-0”(减零)和“+”(取正)的方法,也可以达到类型转换的效果。

    console.log('123'- 0);console.log(+ '456');
复制代码

2、string(字符串)

(1)定义:JS中字符串类型用于表示文本数据。它是由0或多个16位Unicode字符组成的字符序列。字符串可以由双引号(")或单引号(')表示。

(2)例如:

    var text1 = 'message';console.log(text1);console.log(text1.length);console.log(typeof text1);
复制代码

(3)类型转换(string)。

1>.String() 方法可把一个数据转换为字符串,并返回结果。

    console.log(String(123));// "数字"console.log(String(true));// "布尔"console.log(String(undefined)); // "undefined"console.log(String(null)); // "null"
复制代码

2>.通过“+''”的方法,也可以转换为字符串。

    console.log(345 + '');// "数字"console.log(false + '');// "布尔"console.log(undefined + ''); // "undefined"console.log(null + ''); // "null"
复制代码

(4)多行字符串的拼接:1>.两个字符串之间用“+”拼接;2>.ES6语法,可用“``”进行拼接。

3、boolean(布尔值)

(1)定义:表示真伪的两个特殊值,即true(真)和false(假)。PS:true不一定是1,而false也不一定是0.Boolean类型的值true和false是区分大小写的,True和False(以及其他的混合大小写形式)都不是Boolean值,只是标志符。

(2)例如:

    var genuine = true;console.log(genuine);console.log(typeof genuine);var sham = false;console.log(sham);console.log(typeof sham);
复制代码

(3)类型转换。

1>.Boolean()函数可以将任意类型的值转为布尔值。

    console.log(Boolean(1));// "数字1"console.log(Boolean(0));// "数字0"console.log(Boolean('1')); // "字符串1"console.log(Boolean('0')); // "字符串0"console.log(Boolean( )); //空格console.log(Boolean('')); //空字符串console.log(Boolean(null)); //  "null"console.log(Boolean(undefined)); // "undefined"
复制代码

2>.通过利用感叹号取反的方法,也可以将任意类型的值转为布尔值。(此方法不适用于空格)

    console.log(!!1);// "数字1"console.log(!!0);// "数字0"console.log(!!'1'); // "字符串1"console.log(!!'0'); // "字符串0"console.log(!!''); //空字符串console.log(!!null); //  "null"console.log(!!undefined); // "undefined"
复制代码

4、null 和 undefined

(1)定义:undefined 表示“未定义”或不存在,即由于目前没有定义,所以此处暂时没有任何值。null 表示空值,即此处的值为空。

(2)例如:

    var message;console.log(message);console.log(typeof message);var text = null;console.log(text);console.log(typeof text);
复制代码

(3)undefined和null的区别:javaScript高级程序设计(第三部): 在使用var声明变量但未对其加以初始化时,这个变量的值就是undefined。 null值则是表示空对象指针。简单理解起来就是说,undefined指没有赋值的变量,是非对象;而null通过typeof打印出来是object,可以看做暂不打算赋值的对象。

6、参考资料

(1)MDN:JavaScript 数据类型和数据结构

(2)阮一峰: JavaScript 教程 数据类型。

(3)JavaScript高级程序设计(第三版)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/276928.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网络虚拟化有几种实现方式_停车场管理系统的防砸车功能有几种方式?如何实现?...

原标题:停车场管理系统的防砸车功能有几种方式?如何实现?前言0101正文一、压力波防砸装置也叫遇阻防砸,主要是安装遇阻返回装置,当道闸杆下落过程中接触到车辆或者行人(接触力度是可以调节的),装置道闸杆底…

Socket 死连接详解

当使用 Socket 进行通信时,由于各种不同的因素,都有可能导致死连接停留在服务器端,假如服务端需要处理的连接较多,就有可能造成服务器资源严重浪费,对此,本文将阐述其原理以及解决方法。 在写 Socket 进行通…

[Swift]LeetCode1146. 快照数组 | Snapshot Array

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/)➤GitHub地址&a…

aspnet中gridview文本只显示开始几个文本_软网推荐:三个小软件 轻松解决文本操作难题...

TXT文本操作在Windows操作中算是比较容易的事了,但简单的文本操作也会遇到难题。例如,对于我们反复需要使用的多个信息,如果仅靠CtrlC和CtrlV来回复制、粘贴,效率会极低;再如,对于一些软件组件中显示的文本…

刚被IBM收购的红帽,它的下一站是中国

前不久IBM斥资340亿美元收购红帽的新闻震惊了所有人,这个金额是互联网上第三大交易,也是开源史上最大交易。这个收购背后到底有哪些目的?红帽接下来会做什么?11月6日红帽在北京举办红帽论坛,向外界介绍了红帽的想法。 …

验证DetailsView插入数据不为空

验证DetailsView插入数据不为空,在对象数据源ObjectDataScource(ChannelDS)的Inserting事件中写如下代码:protected void ChannelDS_Inserting(object sender, ObjectDataSourceMethodEventArgs e) { string name "";…

为什么onenote一直在加载_OneNote:科研笔记独一无二的无敌利器

每个人都梦想着自己有超乎常人的记忆力,拥有者过目不忘的技能,从此走向人生巅峰……然而我们都不是那样的人,在这个高速发展的数字新信息时代,进行有效的记忆,保存我们随时到来的灵感等,这就需要我们进行笔…

WPF 实现 DataGrid/ListView 分页控件

原文:WPF 实现 DataGrid/ListView 分页控件在WPF中,通常会选用DataGrid/ListView进行数据展示,如果数据量不多,可以直接一个页面显示出来。如果数据量很大,2000条数据,一次性显示在一个页面中,不仅消耗资源…

Sql Server 中汉字处理排序规则,全角半角

--1. 为数据库指定排序规则CREATEDATABASEdb COLLATE Chinese_PRC_CI_ASGOALTERDATABASEdb COLLATE Chinese_PRC_BINGO/**//**/--2. 为表中的列指定排序规则CREATETABLEtb(col1 varchar(10),col2 varchar(10) COLLATE Chinese_PRC_CI_AS)GOALTERTABLEtb ADDcol3 varchar(10) CO…

解决局域网设置固定IP后无法上网?

1.cmd中输入ipconfig /all查看ip和dns的状态 2.查看自动获取的dns是什么,然后手动设置ip和dns时,和自动获取的保持一样即可 注解:设置后还是无法上网后主要检查ip与dns是否设置错误. 转载于:https://www.cnblogs.com/yanans/p/11301061.html

鼠标输入

一、隐藏并捕捉光标 偏航角和俯仰角是通过鼠标移动获得的,水平的移动影响偏航角,竖直的移动影响俯仰角。 原理是,存储上一帧鼠标的位置,在当前帧中计算鼠标位置与上一帧的位置相差多少。如果水平/竖直差别越大,那么俯仰…

c#用canny算子做边缘提取_机器视觉学习(三)边缘检测

一、边缘检测二、边缘检测流程三、Canny边缘检测前言边缘检测是图像处理和计算机视觉中,尤其是特征提取中的一个研究领域。有许多方法用于边缘检测,它们的绝大部分可以划分为两类:基于一阶导数首先计算边缘强度, 通常用一阶导数表…

一个有关Update类型的存储过程的问题

CREATE PROCEDURE testupdateproc AS declare id int declare trandate datetime declare tranlimit int update test set trandatetrandate, tranlimittranlimit where test.idid GO 存储过程语句如上,检查语法是没有问题的,但是在程序中执行时却不行…

[20190805]在小程序中使用npm包

小程序是可以使用npm包的 1. 初始化npm;(在项目目录下输入) npm init 此时项目文件夹会创建一个配置信息的package.json文件 2. 手动新建node_modules文件夹;(在项目目录下新建) 3. 安装npm包; …

bindresult必须在哪个位置_手机视频剪辑工具哪个好?清爽视频编辑APP有人推荐吗?...

作为一个非常喜欢旅游的人,每次出门在外都喜欢发各种照片,以前发照片觉得就能够表达自己的状态和心情,但是随着时间的变化发现,身边的人都开始喜欢发视频了。此前在飞机上拍摄了一段觉得不错的天空视频,想要制作成短片…

[转] 能ping通,但不能上网.

一、感染了病毒所致这种情况往往表现在打开IE时,在IE界面的左下框里提示:正在打开网页,但老半天没响应。在任务管理器里查看进程,(进入方法,把鼠标放在任务栏上,按右键—任务管理器—进程&#…

Gradle打包命令记录

Gradle打包命令记录第一种方式:gradle build执行后在在build/lib下生成war包第二种方式:gradle cleangradle --refresh-dependencies assemble

浅谈ASP中Web页面间的数据传递

【简 介】  基于Web的动态网页设计必会涉及到页面间的数据传递,文章探讨了ASP设计中常用的Web页面间的数据传递方式,分析各种数据传递方式的使用方法、使用场合及优缺点,其都是设计阶段选择数据传递方式考虑的关键 往往使用动态网页技术制作…

变频电源出现故障了怎么办,该如何去诊断呢

在变频电源使用时间过长之后就会出现一些小故障,在出现这些小故障的时候很多人都不知道问题出在哪,今天中港扬盛的技术员教你如何的快速诊断变频电源的故障方法。只有及时的发现,这样就能够有效地去解决变频电源所出现的故障。下面就是变频电…

无法访问你试图使用的功能所在的网络位置_[steam实用工具]解决无法访问商店/社区/好友列表的问题...

[steam实用工具]解决无法访问商店/社区/好友列表的问题在我们使用steam的过程中,由于某些原因,在访问商店/社区/好友列表时会被受到限制。针对这种情况,国内的大神些开发出了以下工具来解决我们访问的难题。本文章中的软件由“羽翼诚"大…