1. 数据类型简介

1.1 为什么需要数据类型

在计算机中,不同的数据所需占用的存储空间是不同的,为了便于把数据分成所需内存大小不同的数据,充分利用存储空间,于是定义了不同的数据类型。

简单来说,数据类型就是数据的类别型号。比如姓名“张三”,年龄18,这些数据的类型是不一样的。

变量是用来存储值的所在处,它们有名字和数据类型。变量的数据类型决定了如何将代表这些值的位存储到计算机的内存中。JavaScript 是一种弱类型或者说动态语言。这意味着不用提前声明变量的类型,在程序运行过程中,类型会被自动确定。

var age = 10; // 这是一个数字型
var areYouOk = '是的'; // 这是一个字符串

在代码运行时,变量的数据类型是由 JS引擎 根据 = 右边变量值的数据类型来判断 的,运行完毕之后, 变量就确定了数据类型。
JavaScript 拥有动态类型,同时也意味着相同的变量可用作不同的类型:

var x = 6;   // x 为数字
var x = "Bill";   // x 为字符串

1.3 数据类型的分类

JS 把数据类型分为两类:

  • 简单数据类型 (Number,String,Boolean,Undefined,Null)
  • 复杂数据类型 (object)

2. 简单数据类型

2.1 简单数据类型(基本数据类型)

JavaScript 中的简单数据类型及其说明如下:

2.2 数字型 Number

JavaScript 数字类型既可以用来保存整数值,也可以保存小数(浮点数)。

var age = 21; // 整数
var Age = 21.3747; // 小数
1. 数字型进制

最常见的进制有二进制、八进制、十进制、十六进制。

 // 1.八进制数字序列范围:0~7
var num1 = 07; // 对应十进制的7
var num2 = 019; // 对应十进制的19
var num3 = 08; // 对应十进制的8// 2.十六进制数字序列范围:0~9以及A~F
var num = 0xA;

现阶段我们只需要记住,在JS中八进制前面加0,十六进制前面加 0x

2. 数字型范围

JavaScript中数值的最大和最小值

alert(Number.MAX_VALUE); // 1.7976931348623157e+308
alert(Number.MIN_VALUE); // 5e-324
  • 最大值:Number.MAX_VALUE,这个值为: 1.7976931348623157e+308
  • 最小值:Number.MIN_VALUE,这个值为:5e-32
3. 数字型三个特殊值
alert(Infinity); // Infinity
alert(-Infinity); // -Infinity
alert(NaN); // NaN
  • Infinity ,代表无穷大,大于任何数值
  • -Infinity ,代表无穷小,小于任何数值
  • NaN ,Not a number,代表一个非数值
4. isNaN()

var usrAge = 21;
var isOk = isNaN(userAge);
console.log(isNum); // false ,21 不是一个非数字
var usrName = "andy";
console.log(isNaN(userName)); // true ,"andy"是一个非数字

2.3 字符串型 String

字符串型可以是引号中的任意文本,其语法为 双引号 “”单引号’'

var strMsg = "我爱北京天安门~"; // 使用双引号表示字符串
var strMsg2 = '我爱吃猪蹄~'; // 使用单引号表示字符串
// 常见错误
var strMsg3 = 我爱大肘子; // 报错,没使用引号,会被认为是js代码,但js没有这些语法

因为 HTML 标签里面的属性使用的是双引号,JS 这里我们更推荐使用单引号

1. 字符串引号嵌套

JS 可以用单引号嵌套双引号 ,或者用双引号嵌套单引号 (外双内单,外单内双)

var strMsg = '我是"高帅富"程序猿'; // 可以用''包含""
var strMsg2 = "我是'高帅富'程序猿"; // 也可以用"" 包含''
// 常见错误
var badQuotes = 'What on earth?"; // 报错,不能 单双引号搭配
2. 字符串转义符

类似HTML里面的特殊字符,字符串中也有特殊字符,我们称之为转义符。

转义符都是 \ 开头的,常用的转义符及其说明如下:

案例:弹出网页警示框

酷热难耐,火辣的太阳底下,我挺拔的身姿,成为了最为独特的风景。我审视四周,这里,是我的舞台,我就是天地间的王者。这一刻,我豪气冲天,终于大喊一声:“收破烂啦~”

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><script>// 酷热难耐,火辣的太阳底下,我挺拔的身姿,成为了最为独特的风景。我审视四周,这里,是我的舞台,我就是天地间的王者。这一刻,我豪气冲天,终于大喊一声:"收破烂啦~"//要加换行符号: \n  才是最终的效果。alert('酷热难耐,火辣的太阳底下,我挺拔的身姿,成为了最为独特的风景。\n 我审视四周,这里,是我的舞台,我就是天地间的王者。\n 这一刻,我豪气冲天,终于大喊一声:"收破烂啦~"');</script>
</head>
<body></body>
</html>
3. 字符串长度

字符串是由若干字符组成的,这些字符的数量就是字符串的长度。通过字符串的 length 属性可以获取整个字符串的长度。

var strMsg = "我是帅气多金的程序猿!";
alert(strMsg.length); // 显示 11
4. 字符串拼接
  • 多个字符串之间可以使用 + 进行拼接,其拼接方式为 字符串 + 任何类型 = 拼接之后的新字符串
  • 拼接前会把与字符串相加的任何类型转成字符串,再拼接成一个新的字符串
//1.1 字符串 "相加"
alert('hello' + ' ' + 'world'); // hello world
//1.2 数值字符串 "相加"
alert('100' + '100'); // 100100
//1.3 数值字符串 + 数值
alert('11' + 12); // 1112

+ 号总结口诀:数值相加 ,字符相连

5. 字符串拼接加强
console.log('pink老师' + 18); // 只要有字符就会相连
var age = 18;
// console.log('pink老师age岁啦'); // 这样不行哦
console.log('pink老师' + age); // pink老师18
console.log('pink老师' + age + '岁啦'); // pink老师18岁啦
  • 我们经常会将字符串和变量来拼接,因为变量可以很方便地修改里面的值
  • 变量是不能添加引号的,因为加引号的变量会变成字符串
  • 如果变量两侧都有字符串拼接,口诀“引引加加 ”,删掉数字,变量写加中间

案例:显示年龄

弹出一个输入框,需要用户输入年龄,之后弹出一个警示框显示“您今年 xx 岁啦”(xx 表示刚才输入的年龄)

案例分析

交互编程的三个基本要素:

  1. 你喜欢我吗?→ 这是 用户输入
  2. 女孩想了想 → 这是 程序内部处理
  3. 最后给了你一巴掌 → 这是 输出结果

那么在程序中要如何实现呢?
① 弹出一个输入框(prompt),让用户输入年龄(用户输入)
② 把用户输入的值用变量保存起来,把刚才输入的年龄与所要输出的字符串拼接 (程序内部处理)
③ 使用alert语句弹出警示框(输出结果)

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><script>// 弹出一个输入框,需要用户输入年龄,之后弹出一个警示框显示“您今年 xx 岁啦”(xx 表示刚才输入的年龄)var age = prompt('请输入您的年龄');alert('您今年' + age + '岁啦');</script>
</head>
<body></body>
</html>

第二种写法:

// 弹出一个输入框(prompt),让用户输入年龄(用户输入)
// 把用户输入的值用变量保存起来,把刚才输入的年龄与所要输出的字符串拼接 (程序内部处理)
// 使用alert语句弹出警示框(输出结果)
var age = prompt('请输入您的年龄');
var str = '您今年已经' + age + '岁了';
alert(str);

2.4 布尔型 Boolean

布尔类型有两个值:true 和 false ,其中 true 表示真(对),而 false 表示假(错)。

布尔型和数字型相加的时候, true 的值为 1 ,false 的值为 0。

console.log(true + 1); // 2
console.log(false + 1); // 1

2.5 Undefined 和 Null

一个声明后没有被赋值的变量会有一个默认值 undefined ( 如果进行相连或者相加时,注意结果)

var variable;
console.log(variable); // undefined
console.log('你好' + variable); // 你好undefined
console.log(11 + variable); // NaN
console.log(true + variable); // NaN

一个声明变量给 null 值,里面存的值为空(学习对象时,我们继续研究null)

var vari = null;
console.log('你好' + vari); // 你好null
console.log(11 + vari); // 11
console.log(true + vari); // 1

3.获取变量数据类型

3.1 获取检测变量的数据类型

typeof 可用来获取检测变量的数据类型:

var num = 18;
console.log(typeof num) // 结果 numbervar str = 'pink';
console.log(typeof str); // stringvar flag = true;
console.log(typeof flag); // booleanvar vari = undefined;
console.log(typeof vari); // undefinedvar timer = null;
console.log(typeof timer); // object// prompt 取过来的值是 字符型的
var age = prompt('请输入您的年龄');
console.log(age);
console.log(typeof age);

不同类型的返回值:

3.2 字面量

字面量是在源代码中一个固定值的表示法,通俗来说,就是字面量表示如何表达这个值。

  • 数字字面量:8, 9, 10
  • 字符串字面量:‘黑马程序员’, “大前端”
  • 布尔字面量:true,false

4. 数据类型转换

4.1 什么是数据类型转换

使用表单、prompt 获取过来的数据默认是字符串类型的,此时就不能直接简单的进行加法运算,而需要转换变量的数据类型。通俗来说,就是把一种数据类型的变量转换成另外一种数据类型

我们通常会实现3种方式的转换:

  • 转换为字符串类型
  • 转换为数字型
  • 转换为布尔型

4.2 转换为字符串

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>Document</title><script>// 1. 把数字型转换为字符串型 变量.toString()var num = 10;var str = num.toString();console.log(str);console.log(typeof str);// 2. 我们利用 String(变量)   console.log(String(num));// 3. 利用 + 拼接字符串的方法实现转换效果 隐式转换console.log(num + '');</script>
</head>
<body></body>
</html>

  • toString() 和 String() 使用方式不一样。
  • 三种转换方式,我们更喜欢用第三种加号拼接字符串转换方式, 这一种方式也称之为隐式转换。

4.3 转换为数字型(重点)

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>Document</title><script>// var age = prompt('请输入您的年龄');// 1. parseInt(变量)  可以把 字符型的转换为数字型 得到是整数// console.log(parseInt(age));console.log(parseInt('3.14')); // 3 取整console.log(parseInt('3.94')); // 3 取整console.log(parseInt('120px')); // 120 会去到这个px单位console.log(parseInt('rem120px')); // NaN// 2. parseFloat(变量) 可以把 字符型的转换为数字型 得到是小数 浮点数console.log(parseFloat('3.14')); // 3.14console.log(parseFloat('120px')); // 120 会去掉这个px单位console.log(parseFloat('rem120px')); // NaN// 3. 利用 Number(变量) var str = '123';console.log(Number(str));console.log(Number('12'));// 4. 利用了算数运算 -  *  /  隐式转换console.log('12' - 0); // 12console.log('123' - '120');console.log('123' * 1);</script>
</head>
<body></body>
</html>

案例 1:计算年龄

此案例要求在页面中弹出一个输入框,我们输入出生年份后, 能计算出我们的年龄。

案例分析:
① 弹出一个输入框(prompt),让用户输入出生年份 (用户输入)
② 把用户输入的值用变量保存起来,然后用今年的年份减去变量值,结果就是现在的年龄 (程序内部处理)
③ 弹出警示框(alert) , 把计算的结果输出 (输出结果)

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><script>// 此案例要求在页面中弹出一个输入框,我们输入出生年份后, 能计算出我们的年龄。// 案例分析:// ① 弹出一个输入框(prompt),让用户输入出生年份 (用户输入) // ② 把用户输入的值用变量保存起来,然后用今年的年份减去变量值,结果就是现在的年龄 (程序内部处理) // ③ 弹出警示框(alert) , 把计算的结果输出 (输出结果)var year = prompt('请输入您的出生年份');// 目前还没学到获取系统时间,所以先手动输入一个年份:var age = 2020 - year;  //year 取过来的是字符串类型 但是这里用的是减法:有隐式转换alert('您今年已经' + age + '岁了');</script>
</head>
<body></body>
</html>

案例 2:简单加法器

计算两个数的值, 用户输入第一个值后,继续弹出第二个输入框并输入第二个值,最后通过弹出窗口显示出两次输入值相加的结果。

案例分析:
① 先弹出第一个输入框,提示用户输入第一个值 保存起来
② 再弹出第二个框,提示用户输入第二个值 保存起来
③ 把这两个值相加,并将结果赋给新的变量(注意数据类型转换)
④ 弹出警示框(alert) , 把计算的结果输出 (输出结果)

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><script>// 计算两个数的值, 用户输入第一个值后,继续弹出第二个输入框并输入第二个值,最后通过弹出窗口显示出两次输入值相加的结果。// 案例分析:// ① 先弹出第一个输入框,提示用户输入第一个值 保存起来// ② 再弹出第二个框,提示用户输入第二个值 保存起来// ③ 把这两个值相加,并将结果赋给新的变量(注意数据类型转换) // ④ 弹出警示框(alert) , 把计算的结果输出 (输出结果)var num1 = prompt('请输入第一个值:');var num2 = prompt('请输入第二个值:');var num = parseFloat(num1) + parseFloat(num2);alert('结果是:' + num);</script>
</head>
<body></body>
</html>

4.4 转换为布尔型

console.log(Boolean('')); // false
console.log(Boolean(0)); // false
console.log(Boolean(NaN)); // false
console.log(Boolean(null)); // false
console.log(Boolean(undefined)); // false
console.log(Boolean('小白')); // true
console.log(Boolean(12)); // true

扩展阅读(了解)

1.能够知道解释性语言和编译型语言的特点
2.能够知道标识符不能是关键字或保留字
3.能够独立完成课后作业

  • 解释型语言和编译型语言
  • 标识符、关键字、保留字
  • 课后作业

1. 解释型语言和编译型语言

1. 概述

计算机不能直接理解任何除机器语言以外的语言,所以必须要把程序员所写的程序语言翻译成机器语言才能执行程序。程序语言翻译成机器语言的工具,被称为翻译器。

  • 翻译器翻译的方式有两种:一个是编译,另外一个是解释。两种方式之间的区别在于翻译的时间点不同
  • 编译器是在代码执行之前进行编译,生成中间代码文件
  • 解释器是在运行时进行及时解释,并立即执行(当编译器以解释方式运行的时候,也称之为解释器)
2. 执行过程

2. 标识符、关键字、保留字

1. 标识符

标识(zhi)符:就是指开发人员为变量、属性、函数、参数取的名字。

标识符不能是关键字或保留字。

2. 关键字

关键字:是指 JS本身已经使用了的字,不能再用它们充当变量名、方法名。

包括:break、case、catch、continue、default、delete、do、else、finally、for、function、if、in、
instanceof、new、return、switch、this、throw、try、typeof、var、void、while、with 等。

3. 保留字

保留字:实际上就是预留的“关键字”,意思是现在虽然还不是关键字,但是未来可能会成为关键字,同样不能使用它们当变量名或方法名。

包括:boolean、byte、char、class、const、debugger、double、enum、export、extends、
fimal、float、goto、implements、import、int、interface、long、mative、package、
private、protected、public、short、static、super、synchronized、throws、transient、
volatile 等。

注意:如果将保留字用作变量名或函数名,那么除非将来的浏览器实现了该保留字,否则很可能收不到任何错误消息。当浏览器将其实现后,该单词将被看做关键字,如此将出现关键字错误。

课后作业

  1. 给同桌讲讲交换两个变量的值 算法(不管他愿不愿听)
  2. 依次询问并获取用户的姓名、年龄、性别,并打印用户信息

前端Javascript第一天知识点:数据类型(重要)相关推荐

  1. 杰普实训(前端)第一天知识点总结

    杰普实训(前端)第一天知识点总结 今日小结 一个完整软件的组成 前端工程师和后端工程师 前端工程师 Java工程师 js 基础 js与java的简单对于 js组成 变量 数据类型 操作符 一元运算符 ...

  2. Web前端开发笔记——第四章 JavaScript程序设计 第三节 数据类型

    目录 一.基本数据类型 (一)String类型 (二)Number类型 1.字面量 2.无穷大 3.非数值 (三)Boollean类型 (四)Undefined类型和Null类型 二.引用数据类型 ( ...

  3. JavaScript第一天学习总结—— 数据类型、解释型语言和编译型语言、关键字和保留字

    数据类型 数据类型简介 为什么需要数据类型? 在计算机中,不同的数据所需占用的存储空间是不同的, 为了便于把数据分成所需内存大小不同的数据,充分利用存储空间,于是定义了不同的数据类型. 简单来说,数据 ...

  4. 【笔记-面试】《imooc -前端跳槽面试技巧》、《imooc- 揭秘一线互联网企业 前端javaScript高级面试》、《imooc-前端javascript面试技巧》

    20190204:<imooc -前端跳槽面试技巧> 第01章 课程介绍 01-01 课程导学 一.一面知识点 1.面试技巧 页面布局类 2.css盒模型dom事件类 3.http协议类 ...

  5. Web前端-JavaScript基础教程上

    Web前端-JavaScript基础教程 将放入菜单栏中,便于阅读! JavaScript是web前端开发的编程语言,大多数网站都使用到了JavaScript,所以我们要进行学习,JavaScript ...

  6. 前端---JavaScript基础1

    文章目录 前端---JavaScript基础1 数据类型 面向对象 对象创建方式 对象类型判断 前端-JavaScript基础1 JS是 解释型语言:跨平台 慢 编译型语言:不能跨平台 快 数据类型 ...

  7. Web前端-JavaScript基础教程下

    Web前端-JavaScript基础教程下 <script>有6个属性: async对外部脚本有效,可以用来异步操作,下载东西,不妨碍其他操作. charset为src属性指定字符集. d ...

  8. 自学转行前端找到第一份前端工作,做得很吃力,被劝退怎么办?

    此文是转载的文章,点评下:自学前端应该没啥问题,主要是文中提到的兄弟手很生,完成项目进度,连简单的业务都很难完成,这样必须面对被劝退的结果.技术要是学扎实了,则可能就是个宝了. 转载文章正文如下: 身 ...

  9. 初级前端自学react-native,必备知识点(ES6+ReactJS+flexbox)

    我们在学会搭建react-native环境之后,打开项目根目录,看到很多个文件,但是最起眼的应该就是那俩js兄弟文件了 我们一看那名字就知道,我们接下来的任务就是要弄它们: 我们用编辑器打开项目根目录 ...

  10. 2020-web前端-JavaScript基础笔记

    ==================================================================================================== ...

最新文章

  1. 说说.net事件和委托。
  2. linux shell tr命令 换行符换成空格
  3. vue-music(1)音乐播发器 项目开发记录
  4. 【中继协助频谱切换】基于中继协助的频谱切换机制的MATLAB仿真
  5. 中国SaaS死或生之七:死生非大事,利益最相关
  6. Android Studio添加jar包
  7. Ubuntu NFS搭建过程
  8. 域名发散--前端优化(三)
  9. pandas使用笔记(一)导入,查看,读取数据
  10. HTTP请求头和响应头部包括的信息有哪些?(转)
  11. 失败全是无能,成功多是侥幸。
  12. R语言入门(2)——R包的安装
  13. 平均值绝对偏差最大c语言,请教平均值和最大偏差值得使用
  14. 初次使用Chloe(本人小白)
  15. SEO入门知识2:不同角度看seo
  16. python如何手动编写开根号的算法_手动开根号方法
  17. 转载:16种鲜鱼的做法
  18. Unity3D-network网络相关(一)
  19. 爬取某视频网站电影,仅参考学习
  20. slim的train

热门文章

  1. java中的match函数_js 正则表达式中的match函数
  2. solver参数详解
  3. 电脑突然重启解决方案
  4. 云计算与大数据概论第十一周(2)
  5. htb:Starting Point
  6. ‘couldn‘t find a common superview for 问题记录
  7. 简单做份西红柿炒蛋778
  8. Solr数据库连接之多表关联
  9. 羊皮卷之七:我要笑遍世界
  10. win7如何设置以管理员身份运行程序