剑指前端(前端入门笔记系列)—— JS基本数据类型及其类型转换
- "undefined"——未定义的值
- "boolean"——布尔值
- "string"——字符串
- "number"——数值
- "object"——对象或null
- "function"——函数
console.log(typeof typeof 123) ; //返回string
var str;
console.log(str); //undefined
console.log(age); //报错
var str;
console.log(typeof str); //undefined
console.log(typeof age); //undefined
但是要命的是,二者的类型居然都是undefined,虽然逻辑上确实合理,但是这有可能导致二者被混淆,所以说,即便未初始化的变量会自动被赋予undefined的值,但显式地初始化变量依然是明智的选择。如果能够做到这一点,那么当typeof操作符返回"undefined”值时,我们就知道被检测的变量还没有被声明,而不是尚未被初始化。
var str = null;
console.log(typeof str); //"object"
console.log(null == undefined); //true
alert(isNaN(NaN)); //true
alert(isNaN(10)); //false(10是一个数值)
alert(isNaN("10")); //false(可以被转换成数值10)
alert(isNaN("blue")); //true(不能转换成数值)
alert(isNaN(true)); //false(可以被转换成数值1)

- 字符——>数值:
parseInt("123abc"); //返回123
parseInt("123.14"); //返回123
parseInt("12a3.14"); //返回12
parseInt("123.1a4"); //返回123
parseInt("abc123"); //返回NAN
parseFloat("123abc"); //返回123
parseFloat("abc123"); //返回NaN
parseFloat("123.456"); //返回123.456
parseFloat("123.4a56"); //返回123.4
parseFloat("123.00"); //返回123
parseFloat("123.0a56"); //返回123
parseFloat("12a3.35"); //返回12
parseFloat("a123.056"); //返回NAN
这两个方式的区别:parseFloat()能转换浮点数(也就是能识别小数点),也就是parseInt中小数点不被接收,parseFloat中接收小数点,它们都专门用于把字符串转换成数值
Number("123.1a4"); //返回NaN
Number("123.14"); //返回123.14
Number("123.00"); //返回123
Number("001023.00"); //返回1023
Number("true"); //返回1
Number(""); //返回0
Number()可以用于任何数据类型,以下是它的转换规则:
Math.round("1a23.00"); //返回NaN
Math.round("123.00"); //返回123
Math.round("123.15"); //返回123
Math.round("123.56"); //返回124
Math.round("123.46"); //返回123
Math.round()是四舍五入的取整
共同点:都是严格转换,也就是不允许出现非数字的字符,不然也会返回NaN
- 数值——>字符:
var num = 123.46; num = num.toString();//将str变为一个字符串(原模原样,结果为"123.46")
var num = 123.46789; str = num.toFixed(1);//将str变为一个字符串(四舍五入保留一位小数,结果为"123.5")
var num = 123; str = num.toFixed(3);//将str变为一个字符串(四舍五入保留三位小数,结果为"123.000")
几乎每个值又有一个toString()方法(字符串也有,但是null和undefined没有),该方法不用传递参数,默认情况下以十进制格式返回数字的字符串。如果通过传递基数,该方法可以输出二进制、八进制、十六进制、乃至其他任意有效进制格式表示的字符串值,例如:
var num = 10; alert(num.toString()); //"10"
alert(num.toString(2)); //"1010"
alert(num.toString(8)); //"12"
alert(num.toString(10)); //"10"
alert(num.toString(16)); //"a"
String()
var value1 = 10;
var value2 = true;
var value3 = null;
var value4;
alert(String(value1)); //"10"
alert(String(value2)); //"true"
alert(String(value3)); //"null"
alert(String(value4); //"undefined"
由此可以看出String()的转换规则为:
- 数值——>字符:
- 字符——>数值:
该文章部分整理自《JavaScript 高级程序设计》(第3版),如有侵权行为,请告知删帖,谢谢!
剑指前端(前端入门笔记系列)—— JS基本数据类型及其类型转换的更多相关文章
- 每天成长一点---WEB前端学习入门笔记
WEB前端学习入门笔记 从今天开始,本人就要学习WEB前端了. 经过老师的建议,说到他每天都会记录下来新的知识点,每天都是在围绕着这些问题来度过,很有必要每天抽出半个小时来写一个知识总结,及时对一天工 ...
- 《剑指offer》解题笔记
<剑指offer>解题笔记 <剑指offer>共50题,这两周使用C++花时间做了一遍,谨在此把一些非常巧妙的方法.写代码遇到的难点.易犯错的细节等做一个简单的标注,但不会太过 ...
- 《剑指offer》读书笔记
二叉树 重建二叉树 面试题6:(p55) 题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树. 假设输入的前序遍历和中序遍历的结果中都不含重复的数字. 例如输入前序遍历序列{1, 2, 4 ...
- JavaScript笔记1———js的数据类型
JS的数据类型有: 1.数值类型(Number):js中所有数字均用浮点数字表示. 可以表示32位(即4字节)的整数,也可以表示64位(即8字节)的浮点数(小数). 也可以用二进制.八进制.十进制.十 ...
- 剑指前端(前端入门笔记系列)——BOM
BOM ECMAScript是JavaScript的核心,但如果要在Web中使用JavaScript,那么BOM(浏览器对象模型)则无疑才是真正的核心,BOM提供了很多对象,用于访问浏览器的功能,这些 ...
- 剑指前端(前端入门笔记系列)——DOM(元素大小)
DOM——元素大小 DOM中没有规定如何确定页面中与元素的大小,IE率先映入了一些属性来确定页面中元素的大小,以便开发人员使用,目前,所有主要的浏览器都已经支持这些属性了. 1.偏移量(单位为 ...
- 剑指前端(前端入门笔记系列)——DOM(属性节点)
DOM(属性节点) 属性节点没有过参加家族关系中,其专用选择器:attributes,返回值为对象的形式,它的键是索引值,也就是用对象模拟了一个伪数组,DOM中选择器返回的都是伪数组(可以使用数组的形 ...
- 剑指前端(前端入门笔记系列)——DOM(基本组成与操作)
DOM——基本组成与操作 DOM是针对HTML和XML文档的一个API(应用程序编程接口).DOM描绘了一个层次化的节点树,允许开发人员添加.移除和修改页面的某一部分.他给文档提供了一种结构化的表达方 ...
- 剑指前端(前端入门笔记系列)——DOM(元素节点)
DOM(元素节点) 本文介绍了元素节点的基本操作:增删改查 增 新增一个元素节点分为两步(二者缺一不可),第一步:创建元素节点,第二步:将创建的元素节点插入到指定元素节点中(也就是插入指定元素节点 ...
随机推荐
- Java进阶篇设计模式之五-----外观模式和装饰器模式
前言 在上一篇中我们学习了结构型模式的适配器模式和桥接模式.本篇则来学习下结构型模式的外观模式和装饰器模式. 外观模式 简介 外观模式隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口.这 ...
- SQL优化 MySQL版 - 避免索引失效原则(二)
避免索引失效原则(二) 注:继上一篇文章继续讲解: 避免索引失效原则(一)https://www.cnblogs.com/StanleyBlogs/p/10482048.html#4195062 作者 ...
- Java单元测试神器之Mockito
什么是 Mock 测试 Mock测试就是在测试过程中,对于某些不容易构造或者不容易获取的对象,用一个虚拟的对象来创建以便测试的测试方法.什么是不容易构造的对象呢?例如HttpServletReques ...
- Hystix熔断解决雪崩问题
1.线程隔离,服务降级(服务的消费方做降级处理) 当服务繁忙时,如果服务出现异常,不是粗暴的直接报错,而是返回一个友好的提示,虽然拒绝了用户的访问,但是会返回一个结果. 这就好比去买鱼,平常超市买鱼会 ...
- 第一周Python学习笔记
Python 基本语法: ① Python程序的格式:1.用代码高亮来标识函数丶语句等等 本身的代码高亮并没有实际的意义,只是用来辅助编程人员和阅读人员 更好的识别 2.程序以缩进来标识语句,缩进用 ...
- sed和awk用法
sed和awk用法 Sed sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换.删除.新增.选取等特定工作,下面先了解一下sed的用法sed命令行格式为 ...
- Linux如何查看与测试磁盘IO性能
1. 查看磁盘 IO 性能 1.1 top 命令 top 命令通过查看 CPU 的 wa% 值来判断当前磁盘 IO 性能,如果这个数值过大,很可能是磁盘 IO 太高了,当然也可能是其他原因,例如网络 ...
- 开发人员的必备工具Git(初级)
Git是什么 Git是目前世界上最先进的分布式版本控制系统. 这个软件用起来就应该像这个样子,能记录每次文件的改动: 举个栗子 : 版本 用户 说明 日期 1 张三 删除了软件服务条款5 ...
- 小乌龟git
一.概念 分布式版本控制系统.诞生于Linux社区,有兴趣可以去了解下git的前世今生. 与集中式版本控制有明显区别.集中式:集中管理的服务器,保存所有的修订版本,协同工作的人通过客户端连接服务器,取 ...
- 《深入理解Java虚拟机》-----第4章 虚拟机性能监控与故障处理工具
理论总是作为指导实践的工具,能把这些知识应用到实际工作中才是 我们的最终目的. 给一个系统定位问题的时候,知识.经验是关键基础,数据是依据,工具是运用知识处理数据的手段.这里说的数据包括:运行日志.异 ...