前言

系统学习JavaScript,由于有3年的java后端开发经验,并且有2年的JavaScript+Jquery开发经验,所以像编程语言的一些通用知识就直接跳过了,重点关注JavaScript的语言特性和常用库。

JavaScript数据类型

在JavaScript中一共有6种数据类型:

  • string:字符串。
  • number:数值型。
  • boolean :布尔值。
  • undefined:未定义。
  • null:空值。
  • object:对象类型。

其中string、number、boolean、undefined、null都属于基本类型,只有object属于引用类型。

使用typeof 变量或者自变量可以得到数据类型。

string类型

字符串:用双引号或者单引号括起来的字面量,例子如下。

var s1 = "JavaScript";
var s2 = 'Vue.js';//输出string
console.log(typeof s1);
number类型

在JavaScript中所有数值都是number类型,包括整型和浮点型。

var n1 = 123;
var n2 = 456.123;//都是输出number。
console.log(n1);
console.log(n2);//获取JavaScript最大的数值。等于1.7976931348623157e+308
var maxValueOfNumber = Number.MAX_VALUE;//当一个数值比JavaScript的最大数值还大时,比如Number.MAX_VALUE*2,会返回Infinity,表示无穷大。
//使用typeof 检查Infinity的类型是number。
//-Infinity表示负无穷,例如Number.MAX_VALUE*-2,其类型也是number
console.log(typeof Infinity);//最小的JavaScript数值。注意的是,这个最小数值的定义是比0大的最小的小数。
//值为 5e-324  是JavaScript最小的正数。
//而JavaScript最小的负数是  -Number.MAX_VALUE
var minValueOfNumber = Number.MIN_VALUE;

number类型有一个特殊的数值NaN,是英文 Not A Number 的缩写,表示该类型不是一个数字,但是用typeof NaN 返回的是number,通常是进行类型转换时,如果其他类型转换不了number类型,就是返回这个。

在JavaScript中,浮点数无法保证数值的精确性比如下图:
0.1+0.2不是等于0.3.

较小的整型数据能够保证数值的精确,但是太大也不能保证。


所以对数据精确性敏感的数据,不要使用JavaScript来计算,可以使用后端语言,比如Java定点数等进行精确计算。

boolean类型

布尔类型主要有2个值 true、false,用于进行逻辑判断。true表示真,比如11 false表示假 比如 12.

null类型

null空值的类型只有一个,就是null,这个空值专门用于表示一个为空的对象,typeof null 返回 object类型。

undefined类型

undefined未定义,只有一个值,就是undefined,当声明一个变量但是不赋值时,就是undefined,typeof undefined 返回undefined类型,但是如果一个变量都没有声明,那样会报错。


强制类型转换

  • 是指将一个数据类型强制转化为其他数据类型。
  • 类型转换通常是指将其他数据类型转化为boolean、string、number这三种类型,因为将类型转换为null或者undefined没有意义,也不用强制转换,一个赋值就能完成了。
其他类型转换为string:
方式1:
  • 调用被转换数据类型的toString()方法。
  • 该方式不会影响原本的变量,只是会将转换的结果返回。
  • 注意,null和undefined没有toString()方法,调用会报错。
  • 数值型转string
  • 布尔型转string
方式二:
  • 调用String(被转换的变量)函数。
  • 使用String()函数进行转换时,如果是number类型和boolean类型实际上调用的就是toString()方法,如果是undefined,就直接转换为"undefined",如果是null,就直接转换为"null"。
其他类型转换为number类型
方式一:

使用Number()函数进行转换,参数传被转换的变量。

  • 字符串转数值:
  1. 如果是纯数字字符串就转换为一样的数字。
  2. 如果字符串中含有非数值元素,就转换为NaN。
  3. 如果字符串是空串或者trim后是空串,就转换为0。
  • 布尔转数值:
  1. true转换为1.
  2. false转换为0.
  • null转换为0。
  • undefined转换为NaN。
方式二:

使用parseInt()函数或者parseFloat()函数,顾名思义parseInt是转换为整数,parseFloat转化为浮点数。

  • parseInt()函数可以将字符串中的整数部分提取出来。
  • parseFloat函数将字符串中的浮点数部分提取出来。
  • 其他类型parseInt和parseFloat会先转换为string类型,再转换为整数。


原理是会从左往右解析字符串,知道遇到第一个非数字字符为止,如果第一个字符都是非数字的,就返回NaN。


parseFloat()跟parseInt()差不多,只是他会解析一个小数点,就是数字+一个小数点。

只会解析一个小数点。

其他类型转换为boolean

使用Boolean()函数。

  • 数值转boolean:除了0和NaN转换为false,其他都是true。
  • 字符串转boolean:除了空串转换为false,其余都是true,包括多个空格也是true,理解为 s.length>0
  • null和undefined都是false。

JavaScript基本数据类型讲解相关推荐

  1. JavaScript的数据类型有哪些?

    JavaScript的数据类型有哪些? 基本数据类型:字符串 String.数字 Number.布尔Boolean 复合数据类型:数组 Array.对象 Object 特殊数据类型:Null 空对象. ...

  2. javascript 六种数据类型

    javascript 六种数据类型 js的数据类型和常见隐式转化逻辑. 一.六种数据类型 原始类型(基本类型):按值访问,可以操作保存在变量中实际的值.原始类型汇总中null和undefined比较特 ...

  3. php变量与数据类型,php中变量与数据类型讲解

    本文主要和大家分享一些PHP基础知识,php中变量与数据类型讲解,希望能帮助到大家. 1.什么是变量 变量就相当于一个口袋,可以往里面存放东西. 在编程语言里面,变量是用来存放数值的. 2. PHP如 ...

  4. MySQL 数据类型讲解 和Java中所对应的数据类型讲解

    MySQL 数据类型讲解 和Java中所对应的数据类型讲解 Mysql数据类型分类 在Mysql中常用数据类型一共有四种字符串数据类型.日期/时间数据类型.数值数据类型以及二进制数据类型. 一.字符串 ...

  5. JavaScript 所有数据类型

    JavaScript 所有数据类型 在 JavaScript 中有 5 种不同的数据类型: string number boolean object function 3 种对象类型: Object ...

  6. 前端之 JavaScript 常用数据类型和操作

    JavaScript 常用数据类型有:数字.字符串.布尔.Null.Undefined.对象 JavaScript 拥有动态类型 JavaScript 拥有动态类型.这意味着相同的变量可用作不同的类型 ...

  7. 从数据类型 nvarchar 转换为 numeric 时出错_JS入门篇(三):javascript的数据类型详解...

    JavaScript的数据类型分为两大类,基本数据类型和复杂数据类型. 基本数据类型:Undefined.Null.Boolean.Number.String. 复杂数据类型:Object. (1)U ...

  8. javascript基本数据类型与值类型引用类型说明

    DEMO: http://sources.ikeepstudying.com/jsdata/ 摘要:本文主要讲了javascript中的基本数据类型,以及值类型和引用类型的区别与使用 一.基本数据类型 ...

  9. 基础篇5-python基本数据类型讲解1.1

    第三节课python基本数据类型讲解 (1/2) 1.python一切皆为对象,因为现实 包含了一系列的数据和操作这些数据的方法的一个整体,就叫作对象. 实际内容 自行车 属性:手刹车,轮胎,脚踏板 ...

最新文章

  1. hbase建索引java api_hbase java api样例(版本1.3.1,新API)
  2. Docker容器学习梳理--日常操作总结
  3. Erlang与java的内存架构比较
  4. SQL2005 BI系列课程
  5. Android学习建议
  6. opencv学习笔记3
  7. HTTPS的七个误解(译文)
  8. python界面编程 plc_在python gui编程怎么运行
  9. vue搭建cli脚手架环境(出现问题及解决,主要是node版本低)
  10. 10月20日中国域名商解析量十四强:易名中国季军
  11. Android平台中实现对XML的三种解析方式
  12. 6-5.添加HLSL顶点着色
  13. Atitit 通用接口的设计与实现attilax 总结
  14. awvs 中文手册详细版
  15. 两个9014三极管简易开关电路分析
  16. 迅雷 linux 命令行 版本号,linux下完美运行迅雷5.8.9.662
  17. 通过爬虫获取免费IP代理,搭建自己的IP池(https)
  18. 摄影常用词:光圈、快门、曝光、底片、ISO、焦距、景深
  19. 来电弹屏--线程间操作无效: 从不是创建控件的线程访问它
  20. 我的创作纪念日(3周年)

热门文章

  1. Flutter学习笔记02:初探Flutter项目
  2. 《趣学算法 [陈小玉]》学习笔记01
  3. Java Web学习笔记03:JSP元素
  4. 1.图像作为函数 | 机器视觉介绍_1
  5. datefromstring 转换不准确_免费的在线OCR工具,将图片内容转换为文本内容
  6. bzoj4602 [Sdoi2016]齿轮 边权并查集
  7. bzoj1037 [ZJOI2008]生日聚会Party 插数dp
  8. 2017.3.12 每日小记
  9. android 获取是否连接wifi热点,android - 如何知道您是否已连接到Wifi热点/ Wifi / Wifi Direct - 堆栈内存溢出...
  10. 微异构Embree照片级光线追踪解决方案