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 ...
 
随机推荐
- 误入 GitHub 游戏区,意外地收获颇丰
			
这天中午,我和往常一样就着美食视频吃完午饭,然后起身泡了一杯"高沫". 我闻着茶香享受着午后的阳光,慵懒地坐在工位上习惯性的打开 GitHub 游荡,酝酿着睡意. 误打误撞,我来到 ...
 - STL源码剖析-waked_ptr
			
目录一.提问二. 代码实现2.1 mweak_ptr的具体实现2.2 测试用例一.提问weak_ptr为什么会存在?shared_ptr不是已经有了引用计数吗?具体原因详见模拟实现boost库中的sh ...
 - Solon,一个轻量级的应用开发框架。发布官网喽!!!
			
官网发布: https://solon.noear.org/ 项目简介: Solon,是一个轻量级的应用开发框架.更快.更小.更自由! 支持JDK8+:主框架0.1Mb:组合不同的插件应对不同需求:方 ...
 - 【LeetCode】669. Trim a Binary Search Tree 解题报告(Python)
			
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 递归 日期 题目地址:https://leetcod ...
 - 【LeetCode】935. Knight Dialer 解题报告(Python)
			
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 动态规划TLE 空间换时间,利用对称性 优化空间复杂 ...
 - 【LeetCode】822. Card Flipping Game 解题报告(Python)
			
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 题目地址:https://leetcode.com/problems/card-flip ...
 - 定义制造业操作(定义 MES/MOM 系统)
			
定义制造业操作(定义 MES/MOM 系统) 制造业操作包含众多工厂级活动,涉及设备(定义.使用.时间表和维护).材料(识别.属性.位置和状态).人员(资格.可用性和时间表),以及这些资源与包含其信息 ...
 - 基于Spring MVC + Spring + MyBatis的【野生动物保护系统】
			
资源下载:https://download.csdn.net/download/weixin_44893902/45603787 练习点设计: 模糊查询.删除.新增.修改 一.语言和环境 实现语言:J ...
 - HAproxy开启日志记录
			
1.说明 HAproxy在默认情况不会记录日志, 不仅要在haproxy.conf中配置日志输出, 还需要修改系统日志的配置文件. 2.修改haproxy.conf 在haproxy.conf文件中增 ...
 - zabbix5.0监控安全配置全过程
			
第一部分,安装 此安装配置为yum方式安装zabbix5.0 系统版本:CentOS Linux release 7.5.1804 (Core) zabbix版本:rpm -qa | grep zab ...