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中的数据类型及类型转换的更多相关文章

  1. js中的数据类型

    JS中的数据类型: ——数字  (number)NaN ——字符串(string) ——布尔  (boolean)——函数  (function)     也是对象的一种 ——对象  (object) ...

  2. JS中的数据类型和转换

    一.JS中的数据类型 js中的数据类型可以分为五种:number .string .boolean. underfine .null. number:数字类型 ,整型浮点型都包括. string:字符 ...

  3. Javascript高级编程学习笔记(3)—— JS中的数据类型(1)

    前一段时间由于事情比较多,所以笔记耽搁了一段时间,从这一篇开始我会尽快写完这个系列. 文章中有什么不足之处,还望各位大佬指出. JS中的数据类型 上一篇中我写了有关JS引入的Script标签相关的东西 ...

  4. 如何判断js中的数据类型?

    js六大数据类型:number.string.object.Boolean.null.undefined string: 由单引号或双引号来说明,如"string" number: ...

  5. 如何判断js中的数据类型

    如何判断js中的数据类型:typeof.instanceof. constructor. prototype方法比较 如何判断js中的类型呢,先举几个例子: var a = "iamstri ...

  6. [转]如何判断js中的数据类型

    原文地址:http://blog.sina.com.cn/s/blog_51048da70101grz6.html 如何判断js中的数据类型:typeof.instanceof. constructo ...

  7. 浅谈js中的数据类型,使用typeof获取js数据类型

    JS中的数据类型 1):Undefined——值未定义 注:Undefined类型只有一个值,即特色的undefined.在使用var声明变量但未对其加以初始化时,这个变量的值就是undefined ...

  8. 如何判断js中的数据类型(转)

    如何判断js中的数据类型:typeof.instanceof. constructor. prototype方法比较 如何判断js中的类型呢,先举几个例子: var a = "iamstri ...

  9. 判断js中的数据类型

    如何判断js中的数据类型:typeof.instanceof. constructor. prototype方法比较 如何判断js中的类型呢,先举几个例子: var a = "iamstri ...

随机推荐

  1. &pwn1_sctf_2016 &ciscn_2019_n_1 &ciscn_2019_c_1 &ciscn_2019_en_2&

    在做buu题目的时候,发现在最上面有几道被各位师傅打到1分的题,强迫症逼迫我去做那几道题. 这里来试着去解决这些题...讲真的,我感觉自己刷题真的少,即使是很简单的栈题目,我还是能学习到新的东西.这里 ...

  2. MH/T4029.3 IFPL报文解析

    MH/T4029.3是民航业用来规定飞行计划相关数据交互的规范,今天我们先来解析下其中I类的IFPL报文. 我们先来看看IFPL报文长啥样. ZCZC -TITLE IFPL -FILTIM 0109 ...

  3. C51单片机0~60计数器

    源码 #include<reg51.h> unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f, ...

  4. JAVA比较两个版本号的大小

    /** * 比较版本号的大小 (两个版本号格式应尽量相同) * * @param v1 版本号1 * @param v2 版本号2 * @return 正数:v1大 负数:v2大 0:相等 */ pu ...

  5. Dapr项目应用探索

    背景介绍 前面文章对Dapr的基本信息进行了学习,接下来尝试将Dapr应用相关应用中. 接下来一步步实现应用dapr功能. 一.预期效果 如上图应用Dapr点包含: a) 报表服务绑定统一数据源服务: ...

  6. Windows串口之解决包含setupapi.h还提示找不到符号报错

    关于 本文演示环境: win10 1909 + VS2017 1. 错误信息 明明已经添加了头文件setupapi.h 和 库 setupapi.lib, 却还是提示报错,报错信息: 1>C:\ ...

  7. 【LeetCode】214. Shortest Palindrome 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 前缀是否回文 判断前缀 相似题目 参考资料 日期 题 ...

  8. 【LeetCode】318. Maximum Product of Word Lengths 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 set 位运算 日期 题目地址:https://le ...

  9. HTML5 纯CSS3实现正方体旋转3D效果

    实现效果: 实现代码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> & ...

  10. Eclipse导入Elasticsearch源码

    Eclipse导入Elasticsearch源码的步骤, 基于Elasticsearch 6.2.2的源码版本. 1.安装JDK1.9 Elasticsearch 6.2.2需要JDK1.9编译,否则 ...