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 ...
随机推荐
- 日程选项卡的设置(Project)
<Project2016 企业项目管理实践>张会斌 董方好 编著 在使用任何一个软件之前,都有一些默认的东东要改,比如在Excel里有人不待见单元格里的0,一定要设置成不显示零值:在Wor ...
- 例外日期(Project)
<Project2016 企业项目管理实践>张会斌 董方好 编著 日历无论怎么样自定义,只要仍是存在固化规律的,就铁定会坏事,因为人类的历史就是在大规律中掺杂着无数无规律,再由无数无规律凝 ...
- LuoguP7869 「Wdoi-4」使用三个系统程度的能力 题解
Content 现在有一个转换后的文本文件,以一个长度为 \(n\) 的字符串表示.请判断这个文件是用哪一种写的,详情请返回题面. 数据范围:\(n\leqslant 10^5\).字符串里面至少有一 ...
- 资源分享 | PyTea:不用运行代码,静态分析pytorch模型的错误
前言 本文介绍一个Pytorch模型的静态分析器 PyTea,它不需要运行代码,即可在几秒钟之内扫描分析出模型中的张量形状错误.文末附使用方法. 本文转载自机器之心 编辑:CV技 ...
- 关于c++、go、nodejs、python的计算性能测试,结果令人惊讶
计算性能在计算密集型的服务上,是非常重要的, 一直以为,在计算性能上,肯定是C++ > go > nodejs >= python 但测试结果却让人大跌眼镜!!! 实际的结果是: ...
- 创建具有root权限的账号
第一种 # guest:123456 useradd -p `openssl passwd -1 -salt 'salt' 123456` guest -o -u 0 -g root -G root ...
- SpringBoot整合knife4j框架(可生成离线接口文档),并设置接口请求头token默认值
功能和swagger类似 官网地址:https://doc.xiaominfo.com/knife4j/ 这个框架可以设置返回字段的描述 引入依赖 <dependency> <gro ...
- fedora之自动寻找命令并提示安装PackageKit-command-not-found
fedora 1.比如,我要用clang 命令编译代码,但是没有该指令.比如: clang main.cxx -o main 2.那么,输入未知命令,希望fedora会自动寻找相对应的包,再并提示安装 ...
- 【九度OJ】题目1474:矩阵幂 解题报告
[九度OJ]题目1474:矩阵幂 解题报告 标签(空格分隔): 九度OJ http://ac.jobdu.com/problem.php?pid=1474 题目描述: 给定一个n*n的矩阵,求该矩阵的 ...
- 【LeetCode】72. Edit Distance 编辑距离(Python & C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 递归 记忆化搜索 动态规划 日期 题目地址:http ...