02-JS中的数据类型及类型转换
02-JS中的数据类型及类型转换
一、数据类型
JS中的值,无论是字面量还是变量,都有明确的类型。
(一)概述
1.基本类型5种
number 数字类型
string 字符串类型
boolean 布尔类型,仅有两个值true和false
undefined undefined类型,此类型值只有一个,就是undefined
null null类型,这种类型的值也就只有一个null
2.引用类型
(二)数据类型的检测
使用typeof关键字检查数据类型,通常用来检测变量的类型,因为直接量的类型一眼就看的出来
var a = 123;
console.log(typeof a); //number
1.number数字类型
//下面定义的变量都是number类型
<script>
var a = 200;
var b = -200;
var c = 200.235;
var d = .5e4;
var e = 0xf0;
var f = 016;
var g = Infinity;
var h = NaN;
console.log(typeof a);
console.log(typeof b);
console.log(typeof c);
console.log(typeof d);
console.log(typeof e);
console.log(typeof f);
console.log(typeof g);
console.log(typeof h);
</script>
number类型的东西,所有的数字(不分正负、整浮、大小、进制、infinity、NaN)
2.string字符串类型
var str1 = "小蔡啊";
var str2 = "666";
var str3 = ""; //空字符串也是字符串
console.log(typeof str1);
console.log(typeof str2);
console.log(typeof str3);
3.boolean类型
boolean类型(布尔类型),布尔类型只有两个值true false,即真或假。
var bool = true;
console.log(bool );
console.log(typeof bool); //boolean
注意:此时true和false没有加引导,所以不是字符串,同时注意它也是变量,true是一个关键字,本身就有特殊意义,表示真和假。
4.undefined类型
前面提到过,如果只var了一个变量,没有赋初值,它的默认值是undefined。
这个undefined是自成一家,类型和值都是undefined,这种类型的值也只有一个。
var un; //这里只定义了,没有赋初值
console.log(un);
console.log(typeof un); //undefined
(三)变量的类型
变量是什么类型,和赋值有关,而和定义的时候是没有关系的。定义的时候都是使用var关键字定义。
//动态数据类型
var num = 123; //number
console.log(typeof num);
num = "哈哈"; //改为string是合法的
console.log(typeof num);
我们说JS这个语言叫做动态数据类型,就是赋值的时候就决定这个变量的类型了。甚至可以改变这个变量的值,为其他类型的值。变量的类型是自动检测,就是检查变量存储的值的类型,不是认为定义的。
二、运算符:加号 +
加号两边都是数字的时候,那么就是数学加法;
两边只要有一边是字符串,那么结果就是字符串拼接。
console.log("小" + "蔡"); //小蔡
console.log(3 + 2); //5
console.log(3 + "2"); //32
多个加号,运算顺序是从左至右
<script>
var a = 3;
var b = 2;
var c = 5;
console.log( a + b + c); //10
console.log( a + b + 'c'); //5c
console.log( 'a' + a + b + 'c'); //a32c
console.log( 1 + 2 + "a" + "(3 + 4)"); //3a(3 + 4)
</script>
运算从左到右计算,默认是数字加分,但是一旦遇到字符串就变成字符串拼接了
三、数据类型转换
JS中有一些方法可以将内存中表示其他数据类型转换为对应的数字类型。
因此,先认识一个语句prompt(),这个语句和alert差不多,也是弹窗,弹的是输入框
prompt("请输入你的电话","191");
这些小功能,就叫做程序给我们提供的API,每个API都有自己不同的语法。
prompt("提示文本","默认值");
默认值是可以省略的。
可以把用户输入的值,存入变量:
var a = prompt("请输入你的电话","191");
alert("你输入的电话是" + a);
用prompt接收的任何东西都是字符串,哪怕用户输入了一个数字,也是字符串的数字。
(一)转number
1.Number方法
(1) string "12px"=>NaN ""=>0
(2) boolean true=>1 false=>0
(3) null null=>0
(4) undefined undefined =>NaN
(5) {} {} => NaN
(6)[] [1]=>1, []=>0, [1,2]=>NaN
(7) function Number(function(){})=>NaN
例子:
// 计算器
// 第一步让用户先输入第一个数字
var a = prompt("请输入第一个数字");
// 第二步让用户输入第二个数字
var b = prompt("请输入第二个数字");
// 第三步求和
var sum = Number(a) + Number(b);
// 第四步弹出结果
alert(sum);
2.parselnt方法
parseInt就是将一个string转为一个整数,不四舍五入,直接截取整数部分。如果这个string有乱七八糟的东西,直接截取前面数字部分。
所以使用这个方法可能会丢失小数部分
var a = "678";
var b = parseInt(a); //parseInt就把字符串678转换为数字678
console.log(b); //678
console.log(typeof b); //unmber
parseInt("200"); //200
parseInt("200.666"); //200
parseInt("200小时"); //200
parseInt("200年零2个月"); //200
parseInt("200px"); //200
parseInt("-200.9999"); //-200
parseInt()不仅能够转为整数,还可以进行进制的转换,把任何进制的数字,都换为10进制。
进制转换的字符串,用逗号隔开。
下面的运算结果都是15:
parseInt(15,10);
parseInt(17,8);
parseInt(1111,2);
parseInt("0xf",16);
parseInt("f",16);
parseInt(16,9);
parseInt("15e6",10);
parseInt("15*6",10);
3.parseFloat方法
parseFloat就是将字符串转换为浮点数
尽可能的将一个字符串转为浮点数,浮点数之后如果有乱七八糟的内容,直接舍弃。
var a = "123.456.12";
var b = parseFloat(a);
console.log(b); //123.456
console.log(parseFloat("123.66年")); //123.66
console.log(parseFloat("你说123.66年")); //NaN
也就是说,数字类型都是number,不分整数和浮点数,但是转换的时候分。
4.isNaN()方法
作用:判断一个数字是不是NaN
如果是,则结果是ture;如果不是,则结果是false
isNaN()方法的作用是判断数字是不是NaN,那它能判断其他数据类型吗?
isNaN(true) ==> false
isNaN('12.5px') ==> true
isNaN(null) ==> false
isNaN(undefined) ==> true
结论:
isNaN()这个方法会先把其他类型数据转化成数字类型,之后判断是不是NaN
(二)转string
将一个数字,与一个空字符串进行连字符运算,那么就是自动转为字符串了。
var a = 123;
var b = a + "";
console.log(b);
console.log(typeof b); //string
(三)转boolean
Boolean()方法
只有六种情况Boolean(被转换的数据)的结果是false,其余全是true。
1.0 数字0
2.NaN 数字NaN
3."" 空字符串
4.false 布尔值false
5.undefined undefined类型
6.null null类型
用的不多了解几个。。。
02-JS中的数据类型及类型转换的更多相关文章
- js中的数据类型
JS中的数据类型: ——数字 (number)NaN ——字符串(string) ——布尔 (boolean)——函数 (function) 也是对象的一种 ——对象 (object) ...
- JS中的数据类型和转换
一.JS中的数据类型 js中的数据类型可以分为五种:number .string .boolean. underfine .null. number:数字类型 ,整型浮点型都包括. string:字符 ...
- Javascript高级编程学习笔记(3)—— JS中的数据类型(1)
前一段时间由于事情比较多,所以笔记耽搁了一段时间,从这一篇开始我会尽快写完这个系列. 文章中有什么不足之处,还望各位大佬指出. JS中的数据类型 上一篇中我写了有关JS引入的Script标签相关的东西 ...
- 如何判断js中的数据类型?
js六大数据类型:number.string.object.Boolean.null.undefined string: 由单引号或双引号来说明,如"string" number: ...
- 如何判断js中的数据类型
如何判断js中的数据类型:typeof.instanceof. constructor. prototype方法比较 如何判断js中的类型呢,先举几个例子: var a = "iamstri ...
- [转]如何判断js中的数据类型
原文地址:http://blog.sina.com.cn/s/blog_51048da70101grz6.html 如何判断js中的数据类型:typeof.instanceof. constructo ...
- 浅谈js中的数据类型,使用typeof获取js数据类型
JS中的数据类型 1):Undefined——值未定义 注:Undefined类型只有一个值,即特色的undefined.在使用var声明变量但未对其加以初始化时,这个变量的值就是undefined ...
- 如何判断js中的数据类型(转)
如何判断js中的数据类型:typeof.instanceof. constructor. prototype方法比较 如何判断js中的类型呢,先举几个例子: var a = "iamstri ...
- 判断js中的数据类型
如何判断js中的数据类型:typeof.instanceof. constructor. prototype方法比较 如何判断js中的类型呢,先举几个例子: var a = "iamstri ...
随机推荐
- BJD4th pwn pi
没记错的话,比赛那天正好是圣诞节,就只看了这一道pwn题,我还没做出来.我太菜了. 有一说一,ida换成7.5版本之后,一些去掉符号表的函数也能被识别出来了,ida更好用了呢. 题目程序分为两块,先看 ...
- JAVAWEB使用FreeMarker利用ftl把含有图片的word模板生成word文档,然后打包成压缩包进行下载
这是写的另一个导出word方法:https://www.cnblogs.com/pxblog/p/13072711.html 引入jar包,freemarker.jar.apache-ant-zip- ...
- RPA项目POC指南:概念、步骤与技巧
"为什么部署RPA前要进行POC?RPA不是开箱即用吗?" 其实,RPA的实施并非总是一帆风顺,"碰坑"在所难免. 据安永报告显示,30%至50%的初始RPA项 ...
- Protobuf 动态加载 .proto 文件并操作 Message
Google Protocol Buffer 的常规用法需要使用 protoc 将 .proto 编译成 .pb.h 和 .pb.cc,这样做效率非常高,但是耦合性也很高.在某些追求通用性而不追求性能 ...
- github fmt库语法+范例(fmt version :7.0.1)
!!版权声明:本文为博主原创文章,版权归原文作者和博客园共有,谢绝任何形式的 转载!! 作者:mohist fmt fmt 源码: https://github.com/fmtlib/fmt 本文翻译 ...
- 【LeetCode】1021. Remove Outermost Parentheses 解题报告(Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 遍历 日期 题目地址:https://leetcod ...
- 【LeetCode】20. Valid Parentheses 有效的括号
作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 个人公众号:负雪明烛 本文关键词:有效,括号,括号匹配,栈,题解,leetcode, 力扣 ...
- 【LeetCode】746. Min Cost Climbing Stairs 解题报告(Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 动态规划 日期 题目地址:https://leetc ...
- 【LeetCode】814. Binary Tree Pruning 解题报告(Python & C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 后序遍历 日期 题目地址:https://leetc ...
- 慢 SQL 优化
# 导致SQL执行慢的原因 1. 硬件问题.如网络速度慢,内存不足,I/O吞吐量小,磁盘空间满了等. 2. 没有索引或者索引失效.(一般在互联网公司,DBA会在半夜把表锁了,重新建立一遍索引,因为当你 ...