当前位置: 首页 > news >正文

JavaScript -【第一周】

文章来源于网上收集和自己原创,若侵害到您的权利,请您及时联系并删除~~~

JavaScript 介绍
变量、常量、数据类型、运算符等基础概念
能够实现数据类型的转换,结合四则运算体会如何编程。

  • 体会现实世界中的事物与计算机的关系
  • 理解什么是数据并知道数据的分类
  • 理解变量存储数据的“容器”
  • 掌握常见运算符的使用,了解优先级关系
  • 知道 JavaScript 数据类型隐式转换的特征

1. 介绍

1.1 JavaScript是什么?

什么是JavaScript?
是一种运行在客户端(浏览器)的编程语言,实现人机交互效果。(P4)

作用(做什么?)

  • 网页特效 (监听用户的一些行为让网页作出对应的反馈) MIUI 13 开始·连接万物
  • 表单验证 (针对表单数据的合法性进行判断) 百度一下,你就知道 (baidu.com)
  • 数据交互 (获取后台的数据, 渲染到前端) 1
  • 服务端编程 (node.js)
    在这里插入图片描述

JavaScript的组成

在这里插入图片描述

  • ECMAScript: 规定了js基础语法核心知识。 比如:变量、分支语句、循环语句、对象等等

  • Web APIs :

    DOM 操作文档,比如对页面元素进行移动、大小、添加删除等操作

    BOM 操作浏览器,比如页面弹窗,检测窗口宽度、存储数据到浏览器等等

JavaScript权威网站: https://developer.mozilla.org/zh-CN/docs/Web/JavaScript

小结:

  1. JavaScript是什么?

    JavaScript 是一种运行在客户端(浏览器)的编程语言

  2. JavaScript组成是什么?

    ECMAScript( 基础语法 )、web APIs (DOM、BOM)

体验:
点击切换按钮的案例-体验HTML+CSS+JS 实现交互效果
在这里插入图片描述

1.2 引入方式

掌握 JavaScript 的引入方式,初步认识 JavaScript 的作用
在这里插入图片描述

JavaScript 程序不能独立运行,它需要被嵌入 HTML 中,然后浏览器才能执行 JavaScript 代码。通过 script 标签将 JavaScript 代码引入到 HTML 中,有三种方式:

1.2.1 内部方式(嵌入式)

通过 script 标签包裹 JavaScript 代码
直接写在html文件里,用script标签包住
规范:script标签写在上面
拓展: alert(‘你好,js’) 页面弹出警告对话框

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>JavaScript 基础 - 引入方式</title>
</head>
<body><!-- 内联形式:通过 script 标签包裹 JavaScript 代码 --><script>alert('嗨,欢迎来前端技术!')</script>
</body>
</html>

注意

  • 我们将 <script>放在HTML文件的底部附近的原因是浏览器会按照代码在文件中的顺序加载 HTML。
  • 如果先加载的 JavaScript 期望修改其下方的 HTML,那么它可能由于 HTML 尚未被加载而失效。
  • 因此,将 JavaScript 代码放在 HTML页面的底部附近通常是最好的策略。

1.2.2 外部形式(外链式)

一般将 JavaScript 代码写在独立的以 .js 结尾的文件中,然后通过 script 标签的 src 属性引入

// demo.js
document.write('嗨,欢迎来前端技术!')
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>JavaScript 基础 - 引入方式</title>
</head>
<body><!-- 外部形式:通过 script 的 src 属性引入独立的 .js 文件 --><script src="demo.js"></script>
</body>
</html>

注意:如果 script 标签使用 src 属性引入了某 .js 文件,那么 标签的代码会被忽略!!!如下代码所示:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>JavaScript 基础 - 引入方式</title>
</head>
<body><!-- 外部形式:通过 script 的 src 属性引入独立的 .js 文件 --><script src="demo.js">// 此处的代码会被忽略掉!!!!alert(666);  </script>
</body>
</html>

1.2.3 行内式

代码写在标签内部
注意: 此处作为了解即可,但是后面vue框架会用这种模式

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>JavaScript 基础 - 引入方式</title>
</head>
<body><button onclick="alret('逗你玩儿')"></button>
</body>
</html>

小总结

  1. JavaScript三种书写位置?

    内部

    外部

    行内

  2. 注意事项:

    书写的位置尽量写到文档末尾 </body> 前面

    外部 js 标签中间不要写代码,否则会被忽略

练习1

需求:请用外部和内部两种 JavaScript 书写方式,页面弹出: 努力,奋斗
时间:5分钟
外部:

  1. 新建js文件假 --> 新建 my.js 文件
alert('努力奋斗')
  1. 在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>
</head>
<body><script src="../js/my.js"></script> 
</body>
</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>
</head>
<body><script>alert("努力,奋斗")</script>
</body>
</html>

1.3 注释和结束符

通过注释可以屏蔽代码被执行或者添加备注信息,JavaScript 支持两种形式注释语法:

1.3.1 单行注释

使用 // 注释单行代码

作用:// 右边这一行的代码会被忽略

快捷键:ctrl + /

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>JavaScript 基础 - 注释</title>
</head>
<body><script>// 这种是单行注释的语法// 一次只能注释一行// 可以重复注释document.write('嗨,欢迎学习前端技术!');</script>
</body>
</html>

1.3.2 多行注释

使用 /* */ 注释多行代码

作用:在/* 和 */ 之间的所有内容都会被忽略

快捷键:shift + alt + A

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>JavaScript 基础 - 注释</title>
</head>
<body><script>/* 这种的是多行注释的语法 *//*更常见的多行注释是这种写法在些可以任意换行多少行都可以*/document.write('嗨,欢迎学习前端技术!')</script>
</body>
</html>

1.4 结束符

在 JavaScript 中 ; 代表一段代码的结束,多数情况下可以省略 ; 使用回车(enter)替代。

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>JavaScript 基础 - 结束符</title>
</head>
<body><script> alert(1);alert(2);alert(1)alert(2)</script>
</body>
</html>

实际开发中有许多人主张书写 JavaScript 代码时省略结束符 ;

约定:为了风格统一,结束符要么每句都写,要么每句都不写(按照团队要求.)

小结:

  1. JavaScript 注释有那两种方式?

    单行注释 //

    多行注释 /* */

  2. JavaScript 结束符注意点

    结束符是分号 ;

    结束符可以省略吗?Yes

    但为了风格统一,结束符要么每句都写,要么每句都不写

1.5 输入和输出

输出和输入也可理解为人和计算机的交互,用户通过键盘、鼠标等向计算机输入信息,计算机处理后再展示结果给用户,这便是一次输入和输出的过程。

举例说明:如按键盘上的方向键,向上/下键可以滚动页面,按向上/下键这个动作叫作输入,页面发生了滚动了这便叫输出。

1.5.1 输出

JavaScript 可以接收用户的输入,然后再将输入的结果输出:

alert()document.wirte()console.log()

以数字为例,向 alert()document.write()输入任意数字,他都会以弹窗形式展示(输出)给用户。

1.5.2 输入

prompt() 输入任意内容会以弹窗形式出现在浏览器中,一般提示用户输入一些内容。

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>JavaScript 基础 - 输入输出</title>
</head>
<body><script> // 1. 输入的任意数字,都会以弹窗形式展示document.write('要输出的内容')alert('要输出的内容');// 2. 以弹窗形式提示用户输入姓名,注意这里的文字使用英文的引号prompt('请输入您的姓名:')</script>
</body>
</html>

练习2

时间:5分钟
需求:

  • 浏览器中弹出对话框: 你好 JS~ alert()
  • 页面中打印输出: 你好 JS~ document.write()
  • 页面控制台输出:你好 JS~ console.log()
 document.write("你好,js")alert("你好,js")console.log("你好,js")

JavaScript 代码执行顺序:

  • 按HTML文档流顺序执行JavaScript代码
  • alert()prompt() 它们会跳过页面渲染先被执行(目前作为了解,后期讲解详细执行过程)

1.6 字面量

目标:能说出什么是字面量
在计算机科学中,字面量(literal)是在计算机中描述 事/物
比如:

  • 我们工资是: 1000 此时 1000 就是 数字字面量
  • ‘学子’ 字符串字面量
  • 还有接下来我们学的 [] 数组字面量 {} 对象字面量 等等

总结:

  1. JavaScript是什么?

    JavaScript是一门编程语言,可以实现很多的网页交互效果。

  2. JavaScript 书写位置?

    内部 JavaScript

    内部 JavaScript – 写到 标签上方

    外部 JavaScript - 但是

2. 变量

理解变量是计算机存储数据的“容器”,掌握变量的声明方式

在这里插入图片描述

变量是计算机中用来存储数据的“容器”,它可以让计算机变得有记忆,通俗的理解变量就是使用【某个符号】来代表【某个具体的数值】(数据)

在这里插入图片描述

注意:变量不是数据本身,它们仅仅是一个用于存储数值的容器。可以理解为是一个个用来装东西的纸箱子

<script>// x 符号代表了 5 这个数值x = 5// y 符号代表了 6 这个数值y = 6//举例: 在 JavaScript 中使用变量可以将某个数据(数值)记录下来!// 将用户输入的内容保存在 num 这个变量(容器)中num = prompt('请输入一数字!')// 通过 num 变量(容器)将用户输入的内容输出出来alert(num)document.write(num)
</script>

2.1 声明

要想使用变量,首先需要创建变量(也称为声明变量或者定义变量)
let 变量名

声明变量有两部分构成:声明关键字、变量名(标识)

let 即关键字 (let: 允许、许可、让、要),所谓关键字是系统提供的专门用来声明(定义)变量的词语

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>JavaScript 基础 - 声明和赋值</title>
</head>
<body><script> // let 变量名// 声明(定义)变量有两部分构成:声明关键字、变量名(标识)// let 即关键字,所谓关键字是系统提供的专门用来声明(定义)变量的词语// age 即变量的名称,也叫标识符let age</script>
</body>
</html>

关键字是 JavaScript 中内置的一些英文词汇(单词或缩写),它们代表某些特定的含义,如 let 的含义是声明变量的,看到 let 后就可想到这行代码的意思是在声明变量,如 let age;

letvar 都是 JavaScript 中的声明变量的关键字,推荐使用 let 声明变量!!!

2.2 赋值

声明(定义)变量相当于创造了一个空的“容器”,通过赋值向这个容器中添加数据。
定义了一个变量后,你就能够初始化它(赋值)。在变量名之后跟上一个“=”,然后是数值

在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>JavaScript 基础 - 声明和赋值</title>
</head>
<body><script> // 声明(定义)变量有两部分构成:声明关键字、变量名(标识)// let 即关键字,所谓关键字是系统提供的专门用来声明(定义)变量的词语// age 即变量的名称,也叫标识符let age// 赋值,将 18 这个数据存入了 age 这个“容器”中age = 18// 这样 age 的值就成了 18document.write(age)// 也可以声明和赋值同时进行let str = 'hello world!'alert(str);</script>
</body>
</html>

小结

  1. 变量用什么关键字来声明?let
  2. 变量通过什么符号来赋值? = 这个符号我们也称为 赋值运算符
  3. 开发中我们经常声明的同时可以直接赋值?let age = 18

练习3

需求:

  1. 声明一个变量,用于存放用户购买的商品 数量 ( num ) 为 20 件
  2. 声明一个变量,用于存放用户的 姓名 ( uname ) 为 ’张三’
  3. 依次控制台打印输出两个变量
 let num = 18let uname = '张三'console.log(num,uname)

2.3 更新变量

在这里插入图片描述

2.4 声明多个变量

变量赋值后,还可以通过简单地给它一个不同的值来更新它。

let age = 18,uname = 'zhangsan'let age = 18
let uname = 'zhangsan'//为了更好的可读性,请一行只声明一个变量。

案例1
需求: 浏览器中弹出对话框: 请输入姓名, 页面中输出:刚才输入的姓名
分析:

  • ①:输入:用户输入框:prompt()
  • ②:内部处理:保存数据
  • ③:输出: 页面打印,document.write()
  let a = "zhangsan"document.write("你输入的姓名为:",a)

案例2
需求:
有2个变量: num1 里面放的是 10, num2 里面放的是20

最后变为 num1 里面放的是 20 , num2 里面放的是 10

目的:

  1. 练习变量的使用
  2. 为了后面冒泡排序做准备

在这里插入图片描述

  let num =20,num3=21let num2 = 21let temp temp = num1num1 = num2num2 = tempconsole.log(num1,num2)

2.5 变量的本质

内存:计算机中存储数据的地方,相当于一个空间
变量本质:是程序在内存中申请的一块用来存放数据的小空间

在这里插入图片描述

2.6 关键字

JavaScript 使用专门的关键字 letvar 来声明(定义)变量,在使用时需要注意一些细节:

以下是使用 let 时的注意事项:

  1. 允许声明和赋值同时进行
  2. 不允许重复声明
  3. 允许同时声明多个变量并赋值
  4. JavaScript 中内置的一些关键字不能被当做变量名

以下是使用 var 时的注意事项:

  1. 允许声明和赋值同时进行
  2. 允许重复声明
  3. 允许同时声明多个变量并赋值

大部分情况使用 letvar 区别不大,但是 let 相较 var 更严谨,因此推荐使用 let,后期会更进一步介绍二者间的区别。

2.7 变量名命名规则

关于变量的名称(标识符)有一系列的规则需要遵守:

  1. 只能是字母、数字、下划线、$,且不能能数字开头
  2. 字母区分大小写,如 Age 和 age 是不同的变量
  3. JavaScript 内部已占用于单词(关键字或保留字)不允许使用
  4. 尽量保证变量具有一定的语义,见字知义

规范:

  • 起名要有意义

  • 遵守小驼峰命名法

    第一个单词首字母小写,后面每个单词首字母大写。例:userName

注:所谓关键字是指 JavaScript 内部使用的词语,如 letvar,保留字是指 JavaScript 内部目前没有使用的词语,但是将来可能会使用词语。

在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>JavaScript 基础 - 变量名命名规则</title>
</head>
<body><script> let age = 18 // 正确let age1 = 18 // 正确let _age = 18 // 正确// let 1age = 18; // 错误,不可以数字开头let $age = 18 // 正确let Age = 24 // 正确,它与小写的 age 是不同的变量// let let = 18; // 错误,let 是关键字let int = 123 // 不推荐,int 是保留字</script>
</body>
</html>

练习4

需求:让用户输入自己的名字、年龄、性别,再输出到网页
分析:

  • ①:弹出 输入 框(prompt): 请输入您的姓名 (uname): 用变量保存起来。

  • ②:弹出输入框(prompt) : 请输入您的年龄 (age): 用变量保存起来。

  • ③:弹出输入框(prompt) : 请输入您的性别(gender): 用变量保存起来。

  • ④:页面分别 输出 (document.write) 刚才的 3 个变量

  let uname = prompt("请输入姓名")let age = prompt("请输入你的年龄")let gender = prompt("请输入你性别")document.write(uname,age,gender)

3. 常量

概念:使用 const 声明的变量称为“常量”。

使用场景:当某个变量永远不会改变的时候,就可以使用 const 来声明,而不是let。

命名规范:和变量一致

const PI = 3.14

注意: 常量不允许重新赋值,声明的时候必须赋值(初始化)

在这里插入图片描述

let — 现在实际开发变量声明方式。

var — 以前的声明变量的方式,会有很多问题。

const — 类似于 let ,但是变量的值无法被修改。

4. 数据类型

计算机世界中的万事成物都是数据。

说出JS中基本数据类型有哪些?

  • 基本数据类型
  • 引用数据类型

在这里插入图片描述

计算机程序可以处理大量的数据,为了方便数据的管理,将数据分成了不同的类型:

4.1 数值类型 (Number)

即我们数学中学习到的数字,可以是整数、小数、正数、负数

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>JavaScript 基础 - 数据类型</title>
</head>
<body><script> let score = 100 // 正整数let price = 12.345 // 小数let temperature = -40 // 负数document.write(typeof score) // 结果为 numberdocument.write(typeof price) // 结果为 numberdocument.write(typeof temperature) // 结果为 number</script>
</body>
</html>

JavaScript 中的数值类型与数学中的数字是一样的,分为正数、负数、小数等。

注意事项

  • JS 是弱数据类型,变量到底属于那种类型,只有赋值之后,我们才能确认
  • Java是强数据类型 例如 int a = 3 必须是整数

数字可以有很多操作,比如,乘法 * 、除法 / 、加法 + 、减法 - 等等,所以经常和算术运算符一起。

数学运算符也叫算术运算符,主要包括加、减、乘、除、取余(求模)。

+:求和
-:求差
*:求积
/:求商
%:取模(取余数):开发中经常作为某个数字是否被整除

目标:能说出JavaScript算术运算符执行的优先级顺序

同时使用多个运算符编写程序时,会按着某种顺序先后执行,我们称为优先级。

JavaScript中 优先级越高越先被执行,优先级相同时以书从左向右执行。

  • 乘、除、取余优先级相同

  • 加、减优先级相同

  • 乘、除、取余优先级大于加、减

  • 使用 () 可以提升优先级

  • 总结: 先乘除后加减,有括号先算括号里面的~~~

练习5

需求:对话框中输入圆的半径,算出圆的面积并显示到页面
分析:

  • ①:面积的数学公式: π*r²
  • ②:转换为JavaScript写法 : 变量 * r * r
const PI = 3.14
let r = +prompt('请输入半径:')
let s = PI * r * r
document.write("圆的面积是",s)
console.log(PI)

NaN 代表一个计算错误。它是一个不正确的或者一个未定义的数学操作所得到的结果

NaN 是粘性的。任何对 NaN 的操作都会返回 NaN

console.log('老师' - 2) // NaN
console.log(NaN + 2) // NaN

4.2 字符串类型 (string)

通过单引号( '') 、双引号( "")或反引号包裹的数据都叫字符串,单引号和双引号没有本质上的区别,推荐使用单引号。

注意事项:

  1. 无论单引号或是双引号必须成对使用
  2. 单引号/双引号可以互相嵌套,但是不以自已嵌套自已
  3. 必要时可以使用转义符 \,输出单引号或双引号
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>JavaScript 基础 - 数据类型</title>
</head>
<body><script> let user_name = '小明' // 使用单引号let gender = "男" // 使用双引号let str = '123' // 看上去是数字,但是用引号包裹了就成了字符串了let str1 = '' // 这种情况叫空字符串documeent.write(typeof user_name) // 结果为 stringdocumeent.write(typeof gender) // 结果为 stringdocumeent.write(typeof str) // 结果为 string</script>
</body>
</html>

字符串拼接:

场景: + 运算符 可以实现字符串的拼接。

口诀:数字相加,字符相连

let uanme = '薛之谦'
let song = '认真的雪'
documeent.write(uname + song)  // 薛之谦认真的雪

4.3 模板字符串

拼接字符串和变量

在没有它之前,要拼接变量比较麻烦

documeent.write('大家好,我叫'+ uname + '练习' + age + '年')  

语法

  • `` (反引号)
  • 在英文输入模式下按键盘的tab键上方那个键(1左边那个键)
  • 内容拼接变量时,用 ${ } 包住变量
documeent.write(`大家好,我叫${uname}练习${age}`)  

练习6

需求:页面弹出对话框,输入名字和年龄,页面显示: 大家好,我叫xxx,今年xx岁了

let name = prompt('请输入您的名字')
let age =  prompt('请输入您的年龄')
documeent.write(`大家好,我叫${name},今年${age}岁了`)  

4.4 布尔类型(boolean)

表示肯定或否定时在计算机中对应的是布尔类型数据,它有两个固定的值 truefalse,表示肯定的数据用 true,表示否定的数据用 false

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>JavaScript 基础 - 数据类型</title>
</head>
<body><script> //  pink老师帅不帅?回答 是 或 否let isCool = true // 是的,摔死了!isCool = false // 不,套马杆的汉子!document.write(typeof isCool) // 结果为 boolean</script>
</body>
</html>

4.5 未定义类型(undefined)

未定义是比较特殊的类型,只有一个值 undefined,只声明变量,不赋值的情况下,变量的默认值为 undefined,一般很少【直接】为某个变量赋值为 undefined。

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>JavaScript 基础 - 数据类型</title>
</head>
<body><script> // 只声明了变量,并末赋值let tmp;document.write(typeof tmp) // 结果为 undefined</script>
</body>
</html>

注:JavaScript 中变量的值决定了变量的数据类型。

工作中的使用场景:

  • 我们开发中经常声明一个变量,等待传送过来的数据。
  • 如果我们不知道这个数据是否传递过来,此时我们可以通过检测这个变量是不是undefined,就判断用户是否有数据传递过来

4.6 空类型(null)

JavaScript 中的 null 仅仅是一个代表“无”、“空”或“值未知”的特殊值

let obj = null
console.log(obj) // null

null 和 undefined 区别:

  • undefined 表示没有赋值
  • null 表示赋值了,但是内容为空

null 开发中的使用场景:

  • 官方解释:把 null 作为尚未创建的对象
  • 大白话: 将来有个变量里面存放的是一个对象,但是对象还没创建好,可以先给个

5. 类型转换

理解弱类型语言的特征,掌握显式类型转换的方法

在 JavaScript 中数据被分成了不同的类型,如数值、字符串、布尔值、undefined,在实际编程的过程中,不同数据类型之间存在着转换的关系。

为什么需要类型转换?
JavaScript是弱数据类型: JavaScript也不知道变量到底属于那种数据类型,只有赋值了才清楚。

坑: 使用表单、prompt 获取过来的数据默认是字符串类型的,此时就不能直接简单的进行加法运算。

:通过 typeof 关键字检测数据类型

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>JavaScript 基础 - 数据类型</title>
</head>
<body><script> // 检测 1 是什么类型数据,结果为 numberdocument.write(typeof 1)</script>
</body>
</html>

5.1 隐式转换

某些运算符被执行时,系统内部自动将数据类型进行转换,这种转换称为隐式转换。
规则:

  • + 号两边只要有一个是字符串,都会把另外一个转成字符串
  • 除了+以外的算术运算符 比如 - * / 等都会把数据转成数字类型

缺点:

  • 转换类型不明确,靠经验才能总结

小技巧:

  • +号作为正号解析可以转换成数字型

  • 任何数据和字符串相加结果都是字符串

在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>JavaScript 基础 - 隐式转换</title>
</head>
<body><script> let num = 13 // 数值let num2 = '2' // 字符串// 结果为 132// 原因是将数值 num 转换成了字符串,相当于 '13'// 然后 + 将两个字符串拼接到了一起console.log(num + num2)// 结果为 11// 原因是将字符串 num2 转换成了数值,相当于 2// 然后数值 13 减去 数值 2console.log(num - num2)let a = prompt('请输入一个数字')let b = prompt('请再输入一个数字')alert(a + b);</script>
</body>
</html>

:数据类型的隐式转换是 JavaScript 的特征,后续学习中还会遇到,目前先需要理解什么是隐式转换。

5.2 显式转换

编写程序时过度依靠系统内部的隐式转换是不严禁的,因为隐式转换规律并不清晰,大多是靠经验总结的规律。为了避免因隐式转换带来的问题,通常根逻辑需要对数据进行显示转换。

5.2.1 Number

通过 Number 显示转换成数值类型,当转换失败时结果为 NaN(Not a Number)即不是一个数字。

  • 转成数字类型
  • 如果字符串内容里有非数字,转换失败时结果为 NaN(Not a Number)即不是一个数字
  • NaN也是number类型的数据,代表非数字
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>JavaScript 基础 - 隐式转换</title>
</head>
<body><script>let t = '12'let f = 8// 显式将字符串 12 转换成数值 12t = Number(t)// 检测转换后的类型// console.log(typeof t);console.log(t + f) // 结果为 20// 并不是所有的值都可以被转成数值类型let str = 'hello'// 将 hello 转成数值是不现实的,当无法转换成// 数值时,得到的结果为 NaN (Not a Number)console.log(Number(str))</script>
</body>
</html>

5.2.2 parseInt(数据)

只保留整数

5.2.3 parseFloat(数据)

可以保留小数

5.2.4 转换成字符型

String(数据库)
变量.toString(进制)

练习7

输入2个数,计算两者的和,打印到页面中

在这里插入图片描述

  let num1 = +prompt('请输入第一个数')let num2 =  +prompt('请输入第二个数')// num1 = Number(num1)// num2 = Number(num2)let sum = num1 + num2console.log(sum)

总结

  1. 类型转换的概念
    一种数据类型转成别的类型, JavaScript是弱数据类型,很多情况计算的时候,需要转换数据类型

  2. 隐式转换
    系统自动做转换

  3. 显式转换
    自己写代码告诉系统转成什么类型 Number
    ​ 字符串内容里有非数字得到NaN String

6. 实战案例 - 用户订单信息案例

需求:用户输入商品价格和商品数量,以及收货地址,可以自动打印订单信息
分析:

  • ①:需要输入3个数据,所以需要3个变量来存储 price num address
  • ②:需要计算总的价格 total
  • ③:页面打印生成表格,里面填充数据即可
  • ④:记得最好使用模板字符串

在这里插入图片描述
在这里插入图片描述

相关文章:

JavaScript -【第一周】

文章来源于网上收集和自己原创&#xff0c;若侵害到您的权利&#xff0c;请您及时联系并删除~~~ JavaScript 介绍 变量、常量、数据类型、运算符等基础概念 能够实现数据类型的转换&#xff0c;结合四则运算体会如何编程。 体会现实世界中的事物与计算机的关系理解什么是数据并…...

高性能缓存 Caffeine 原理及实战

Caffeine 是基于Java 8 开发的、提供了近乎最佳命中率的高性能本地缓存组件&#xff0c;Spring5 开始不再支持 Guava Cache&#xff0c;改为使用 Caffeine。 1 算法原理 对于 Java 进程内缓存我们可以通过 HashMap 来实现。不过&#xff0c;Java 进程内存是有限的&#xff0c;…...

【算法】leetcode 105 从前序与中序遍历序列构造二叉树

题目 输入某二叉树的前序遍历和中序遍历的结果&#xff0c;请构建该二叉树并返回其根节点。 假设输入的前序遍历和中序遍历的结果中都不含重复的数字。 示例 1: Input: preorder [3,9,20,15,7], inorder [9,3,15,20,7] Output: [3,9,20,null,null,15,7]示例 2: Input: pr…...

11 | Spark计算数据文件中每行数值的平均值

需求:计算数据文件中的数值的平均值 背景: 你有一个数据文件,其中包含一系列数值,每行一个数值,数值之间用逗号分隔。你想使用Apache Spark分布式计算框架来读取数据文件中的数值并计算它们的平均值。功能要求: 通过Spark配置和上下文初始化Spark应用程序。从数据文件中…...

AI与游戏创新:深度学习的起跑枪声

《AI与游戏创新&#xff1a;深度学习的起跑枪声》 目录 引言AIGC定义与重要性AI在游戏中的应用AI推动游戏创新的可能途径AIGC的挑战与解决方案结论&#xff1a;AI是游戏行业的下一站 引言 AI&#xff08;人工智能&#xff09;正在全球范围内改变各个行业&#xff0c;游戏行…...

【GUI开发】用python爬YouTube博主信息,并开发成exe软件

文章目录 一、背景介绍二、代码讲解2.1 爬虫2.2 tkinter界面2.3 存日志 三、软件演示视频四、说明 一、背景介绍 你好&#xff0c;我是马哥python说&#xff0c;一名10年程序猿。 最近我用python开发了一个GUI桌面软件&#xff0c;目的是爬取相关YouTube博主的各种信息&#…...

7.6 函数的递归调用

直接调用&#xff1a; ### 1. 直接递归调用 直接递归调用是指一个函数直接调用自己。例如&#xff0c;计算阶乘的函数&#xff0c;可以使用递归方法&#xff1a; int factorial(int n) {if (n < 1) {return 1;}return n * factorial(n - 1); } 在这个例子中&#xff0c;f…...

本地开机启动jar

1&#xff1a;首先有个可运行的jar包 本地以ruiyi代码为例打包 2&#xff1a;编写bat命令---命名为.bat即可 echo off java -jar D:\everyDay\test\RuoYi\target\RuoYi.jar 3&#xff1a;设置为开机自启动启动 快捷键winr----输入shell:startup---打开启动文档夹 把bat文件复…...

解决uniapp手机真机调试时找不到手机问题

1、检查 USB 调试是否开启 2、检查是否有选择 文件 传输 选项 3、如果上述都做了还找不到&#xff0c;可以看看开发者选项中的【USB设置】&#xff0c;把模式改为 MIDI 模式...

HarmonyOS应用开发者-----高级认证试题及答案

HarmonyOS应用开发者高级认证试题及答案 试题会不定时刷新,本试题仅供大家学习参考 【判断题】 2/2 HarmonyOS应用可以兼容OpenHarmony生态 正确(True)【判断题】 2/2 所有使用@Component修饰的自定义组件都支持onPageShow,onBackPress和onPageHide生命周期函数。 正确(True…...

R语言随机波动模型SV:马尔可夫蒙特卡罗法MCMC、正则化广义矩估计和准最大似然估计上证指数收益时间序列...

全文链接&#xff1a;http://tecdat.cn/?p31162 最近我们被客户要求撰写关于SV模型的研究报告&#xff0c;包括一些图形和统计输出&#xff08;点击文末“阅读原文”获取完整代码数据&#xff09;。 相关视频 本文做SV模型&#xff0c;选取马尔可夫蒙特卡罗法(MCMC)、正则化广…...

详细教程:Stegsolve的下载,jdk的下载、安装以及环境的配置

最近在学习隐写术&#xff0c;下载stegsolve 以及使用stegsolve倒腾了很久&#xff0c;避免朋友们和我一样倒腾了很久&#xff0c;希望此文可以帮到刚在学习隐写的朋友们(win7下使用stegsolve) 文章目录 一、下载stegsolve链接二、jdk的下载三、jdk的安装四、配置环境变量五、检…...

Watermark 是怎么生成和传递的?

分析&回答 Watermark 介绍 Watermark 本质是时间戳&#xff0c;与业务数据一样无差别地传递下去&#xff0c;目的是衡量事件时间的进度&#xff08;通知 Flink 触发事件时间相关的操作&#xff0c;例如窗口&#xff09;。 Watermark 是一个时间戳, 它表示小于该时间戳的…...

深度学习论文分享(八)Learning Event-Driven Video Deblurring and Interpolation

深度学习论文分享&#xff08;八&#xff09;Learning Event-Driven Video Deblurring and Interpolation 前言Abstract1 Introduction2 Motivation2.1 Physical Model of Event-based Video Reconstruction2.2 Spatially Variant Triggering Threshold 3 Proposed Methods3.1 …...

UI设计开发原则

一、一致性原则 坚持以用户体验为中心设计原则&#xff0c;界面直观、简洁&#xff0c;操作方便快捷&#xff0c;用户接触软件后对界面上对应的功能一目了然、不需要太多培训就可以方便使用本应用系统。 1、字体 保持字体及颜色一致&#xff0c;避免一套主题出现多个字体&am…...

Mac 如何判断下载Mac with Intel Chip 还是 Mac with Apple Chip

如下图&#xff0c;当我们在 Mac系统 下载客户端时&#xff0c;有两种选择&#xff1a;Mac with Intel Chip 、 Mac with Apple Chip 如何判断要下载哪一种&#xff1f; 需要判断本机Mac是在Inter芯片还是Apple芯片上运行的。方法如下&#xff1a; 点击屏幕左上角Apple标志&a…...

windows笔记本远程连接如何打开任务管理器?

参考素材&#xff1a; https://jingyan.baidu.com/article/8275fc86a97f5207a03cf6cd.html https://www.anyviewer.cn/how-to/ctrl-alt-delete-remote-desktop-6540.html 网上查了很多方法&#xff0c;都说ctrlaltend可以解决这个问题。 但是笔记本键盘上没有end键。 继续查了一…...

GitHub打不开解决方法——授人以渔

打不开GitHub的原因之一&#xff0c;DNS地址解析到了无法访问的ip。&#xff08;为什么无法访问&#xff1f;&#xff09; 1、打开GitHub看是哪个域名无法访问&#xff0c;F12一下 2、DNS解析看对应的域名目前哪个IP可以访问 DNS解析的网址&#xff1a; &#xff08;1&#x…...

gRPC之数据压缩Snappy、zstd

文章目录 gRPC之数据压缩Snappy一、背景二、什么是snappy1. Snappy适合场景 三、demo: Go代码实现了一个snappy压缩格式的压缩器for grpc1. 这段代码怎么保证并发安全的&#xff1f; 四、什么是zstd五、 zstd和snappy有什么区别,如何选择?六、demo: Go代码实现了一个zstd压缩格…...

k8s之存储篇---存储类StorageClass

介绍 StorageClass 为管理员提供了描述存储"类"的方法。 不同的类型可能会映射到不同的服务质量等级或备份策略&#xff0c;或是由集群管理员制定的任意策略。 Kubernetes 本身并不清楚各种类代表的什么。这个类的概念在其他存储系统中有时被称为"配置文件&quo…...

WordPress(4)关于网站的背景图片更换

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、更改的位置1. 红色区域是要更换的随机的图片二、替换图片位置三.开启随机数量四.结束前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也…...

2 | Window 搭建单机 Hadoop 和Spark

搭建单机 Hadoop 和 Spark 环境可以学习和测试大数据处理的基础知识。在 Windows 操作系统上搭建这两个工具需要一些配置和设置,下面是一个详细的教程: 注意: 在开始之前,请确保你已经安装了 Java 开发工具包(JDK),并且已经下载了 Hadoop 和 Spark 的最新版本。你可以从…...

接口测试与功能测试的区别~

今天为大家分享的是我们在日常测试工作中, 一定会接触并且目前在企业中是主要测试内容的 功能测试与接口测试 一.功能测试与接口测试的基本概念。 1.1 什么是功能测试呢? 功能测试: 是黑盒测试的一方面, 检查实际软件的功能是否符合用户的需求 功能测试测试的内容包括以下…...

LeetCode 23 合并 K 个升序链表

LeetCode 23 合并 K 个升序链表 来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 链接&#xff1a;https://leetcode.cn/problems/merge-k-sorted-lists/description/ 博主Github&#xff1a;https://github.com/GDUT-Rp/LeetCode 题目&#xff1a; 给你一个链表数组…...

[国产MCU]-W801开发实例-TCP客户端

TCP客户端 文章目录 TCP客户端1、TCP协议简单介绍2、W801创建TCP客户流程本文将详细介绍如何在W801中使用TCP客户端。 1、TCP协议简单介绍 传输控制协议 (TCP) 是一种标准,它定义了如何建立和维护应用程序可以用来交换数据的网络对话。 TCP 与 Internet 协议 (IP) 一起工作,…...

《爵士乐史》乔德.泰亚 笔记

第一章 【美国音乐的非洲化】 【乡村布鲁斯和经典布鲁斯】 布鲁斯&#xff1a;不止包括忧愁、哀痛 十二小节布鲁斯特征&#xff1a; 1.乐型&#xff08;A:主、B:属、C/D:下属&#xff09;&#xff1a;A→A→B→A→C→D→A→A 2.旋律&#xff1a;大三、小三、降七、降五 盲人…...

工程制造领域:企业IT架构

一、IT组织规划架构图 1.1 IT服务保证梯队与指导思想 二、整体业务规划架构图 三、数据化项目规划架构图 四、应用系统集成架构图...

PY32F003F18点灯

延时函数学习完之后&#xff0c;可以学习PY32F003F18的GPIO输出功能。 1、Debug引脚默认被置于复用功能上拉或下拉模式&#xff1a;PA14默认为SWCLK: 置于下拉模式PA13默认为SWDIO: 置于上拉模式PF4默认为Boot&#xff1a;Boot引脚默认置于输入下拉模式 2、GPIO输出状态&#…...

Mac不想用iTerm2了怎么办

这东西真是让人又爱又恨&#xff0c;爱的是它的UI还真不错&#xff0c;恨的是它把我的环境给破坏啦&#xff01;让我每次启动终端之后都要重新source激活我的python环境&#xff0c;而且虚拟环境前面没有括号啦&#xff01;这怎么能忍&#xff01;在UI和实用性面前我断然选择实…...

x86_64 ansible 源码编译安装

源码 GitHub - ansible/ansible: Ansible is a radically simple IT automation platform that makes your applications and systems easier to deploy and maintain. Automate everything from code deployment to network configuration to cloud management, in a languag…...

wordpress首页添加幻灯片/网上培训

这是一个2019年你成为前端&#xff0c;后端或全栈开发者的进阶指南: 你不需要学习所有的技术成为一个web开发者 这个指南只是通过简单分类列出了技术选项 我将从我的经验和参考中给出建议 首选我们会介绍通用的知识, 最后介绍2019年的Web的一些趋势 视频地址&#xff1a; …...

沈阳哪家医院人流做得最好/seo系统源码出售

JMM java的内存模型JMM物理硬件和内存java内存模型工作内存与主内存交互volatile修饰的变量的特殊规则long和double变量的特殊规则并发内存模型的实质原子性(Automicity)可见性有序性先行发生原则什么是先行发生原则Java内存模型自带先行发生原则有哪些JMM java内存模型(Java …...

在线网站备案/百度关键词推广网站

编程时可以利用Disassembly窗口查看汇编代码 在Debug选项下,设置断点才能弹出窗口 也可以通过寄存器窗口监视寄存器中的数据...

网站建设部署与发布有效期/搜索引擎优化解释

转载&#xff1a;点击查看原文在我们使用vue开发的时候 有很多时候我们需要用到背景图(特别是这个背景图是变量时)这个时候会直接使用 内联样式 直接把你拿到的数据拼接上去 注意 在vue中直接使用style时 花括号一定别忘记 还有就是你的url一定要加引号拼接 &#xff1a;sty…...

网站制公司/短视频营销策划方案

1.找到自己的 mysql 安装目录, 进入 bin/ ➜ ~ cd /usr/local/Cellar/mysql5.7/5.7.31/bin ➜ bin ls | grep "safe" mysqld_safe2. 进入安全模式 ➜ bin mysqld_safe --skip-grant-tables 2020-10-28T03:35:24.6NZ mysqld_safe Logging to /usr/local/var/mysq…...

东莞seo优化排名/seo的工作内容主要包括

Kubernetes最近爆出特权升级漏洞&#xff0c;这是Kubernetes的首个重大安全漏洞。为了修补这个严重的漏洞&#xff0c;Kubernetes近日推出了几个新版本。 谷歌高级工程师Jordan Liggitt在周一发布的Kubernetes安全公告中称&#xff0c;Kubernetes v1.10.11、v1.11.5&#xff0c…...