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 ...
随机推荐
- LuoguB2075 幂的末尾 题解
Content 求 \(a^b\) 的末三位. 数据范围:\(1\leqslant a\leqslant 100\),\(1\leqslant b\leqslant 10^4\). Solution ...
- java 8 启动脚本优化
1 #!/bin/bash 2 3 JAVA_HOME=/usr/java/default 4 5 #java虚拟机启动参数 6 JAVA_OPTS="-server -Xms1366m - ...
- 宕机导致分区丢失恢复方案testdisk
一.执行此预案的动机 云主机数据盘分区丢失 二.执行此预案的条件 1.确定用户在报障时间点之前有过数据盘分区存在,而在报障时间点该分区消失 2.在执行我们的恢复操作之前,确保将分区所在数据盘进行备份 ...
- C++11 新特性:enable_shared_from_this
enable_shared_from_this是一个模板类,定义于头文件<memory>,其原型为:template< class T > class enable_share ...
- nim_duilib(14)之xml配置半透明窗体控件不透明
before starting note 截至目前,我只能用xml写一些简单的布局和设置控件属性,循序渐进吧. 正在学习nim_duilib的xml的一些属性. xml配置半透明 GTAV中就有很多控 ...
- 【LeetCode】LCP 07. 传递信息
作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 BFS 日期 题目地址:https://leetcod ...
- 【LeetCode】217. Contains Duplicate 解题报告(Java & Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 字典统计词频 使用set 排序 日期 [LeetCo ...
- 【LeetCode】33. Search in Rotated Sorted Array 解题报告(Python & C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 日期 题目地址:https://leetcode.c ...
- .Net下你不得不看的分表分库解决方案-多字段分片
.Net下你不得不看的分表分库解决方案-多字段分片 介绍 本期主角:ShardingCore 一款ef-core下高性能.轻量级针对分表分库读写分离的解决方案,具有零依赖.零学习成本.零业务代码入侵 ...
- Codeforces Gym-100985C: MaratonIME plays Nim(交互题&博弈)
C. MaratonIME plays Nim time limit per test : 2.0 smemory limit per test : 64 MBinputstandard inputo ...