前端学习6(JS 1)

一.引言

1.我们学习JS的目的就是:

完成一个Web网页的开发

2.前面就有讲过:

HTML相当于人的骨架,CSS相当于给人穿上衣服,起装饰作用,JS相当于是让人动起来,有了灵魂。

3.浏览器分成渲染引擎+JS引擎

  • 渲染引擎:解析html+CSS,俗称"内核"
  • JS引擎:也就是JS解释器,典型的就是Chorme中内置的v8

JS引擎逐行读取JS代码内容,然后解析成二进制指令,再执行

二.JS的组成

ECMASript(简称ES):即JS的语法

DOM:页面文档对象模型,对页面中的元素进行操作

BOM:浏览器对象模型,对浏览器窗口进行操作

三.JS的书写形式

1.行内式

直接将JS代码嵌入到html元素内部

图1

解释图1:后面的onclick的意思是 点击之后触发一个点击事件,然后就会执行代码

使用:

注意:JS中字符串常量可以使用单引号或双引号表示。

++HTML中推荐使用双引号,JS中推荐使用++++单引号++

2.内嵌式

即JS的代码是写在一个script代码当中

ctrl+s保存之后,浏览器中:

3.外部式

即:写到单独的.js文件中,然后++通过script的src属性引入++

图2

解释图2:

首先是在.js文件中写第2行内容,然后在.html文件中通过script的src属性将文件(即.js文件)引入进来,图2中src后面的hello.js就是js文件的文件路径

注意:

这种情况下script标签中间不能写代码,必须空着(写了代码也不会执行)

适合代码多的情况

++目前最为常见的写法是第2种和第3种,推荐第3种写法++

四.定义变量

创建变量(变量定义/变量声明/变量初始化)

++1.通过var进行一个变量的创建!++同样也是写在script里面!

  • var是JS中的关键字,表示这是一个变量
  • "=" 这个符号,在JS中表示"赋值",并且建议这两个符号之间有一个空格
  • 每个语句最后带有一个分号
  • 初始化的值如果是字符串,建议用单引号或者双引号引起来
  • JS中定义一个变量的时候不需要对这个变量去指定类型

运用:

黄框部分是通过console.log(name)将name打印出来!即:

2.++通过let来进行一个变量的定义++,也是在script标签中

那么var和let这两种有什么区别呢?更推荐适用哪种?

建议后续定义变量使用let,因为let比var出现的晚,这就意味着定义变量的时候的一些缺陷,如果使用let定义变量,此时变量的生命周期,作用域,基本和JAVA类似的

五.动态类型静态类型强类型弱类型

知道了变量如何定义还不够,因为在JS里面,所有的变量都是个++动态类型变量++ ,而且所有的变量又属于是个++弱类型++

5.1什么是弱类型,什么又是强类型

  • 强类型变量意味着不同的类型之间变量进行赋值的时候,需要进行一定的手段(eg.强制类型转换)
  • 弱类型变量在不同类型之间进行赋值的时候,可以直接赋值!

那么JS里面的变量为什么是弱类型呢?

通过上图代码的赋值后,可以看到浏览器中不但没有报错,还成功赋值了

所以说明:++JS是一种弱类型语言,它定义的变量也就是弱类型变量++

什么又是动态类型变量什么又是静态类型变量呢?

5.2什么是动态类型,什么又是静态类型

  • 动态类型意味着代码在执行过程中,变量类型可以随时发生变化
  • 静态类型意味着变量定义的时候是什么类型,在运行过程中就是什么类型

那么JS为什么是动态类型变量呢?

由此可证明,JS是动态类型变量

六.变量类型_数字类型

6.1 JS中内置的几种类型

  • number:数字,在JS中不区分整数和小数,统一使用"数字类型"来表示
  • boolean:true真,false假
  • string:字符串类型
  • undefined:只有唯一的值,而undefined. 表示未定义的值
  • null:只有唯一的值null,而null. 表示空值

6.2 特殊的数字值

  • Infinity:无穷大,大于任何数字,表示数字已经超过了JS能表示的范围
  • -Infinity:负无穷大,小于任何数字,表示数字已经超过了JS能表示的范围
  • NaN:表示当前的结果不是一个数字
6.2.1 Infinity:无穷大

按理来说第17行应该报错,但是浏览器中的结果如下所示:(显示Infinity)

6.2.2 -Infinity:无穷小

负无穷大即无穷小

6.2.3 NaN 非数字

七JS中内置的数字类型

7.1string类型

7.1.1

如果字符串里面还有字符串,该怎么写?

可以通过使用单双引号交替使用到方法!

即:可以在单引号内包含双引号,也可以在双引号内包含单引号,以此来做区分

这里注意:13和14行都用于打印内容

只不过13行的console.log()是用于在浏览器的开发者工具控制台或终端里输出信息!

而14行,你只需要在括号里传入要显示的内容即可,就会显示在屏幕上!

所以,如果想给用户显示提示信息,就使用alert,如果是在开发过程中进行调试,查看代码执行过程中的数据内容,使用console.log()即可

如果是:

7.1.2字符串长度和字符串拼接

求长度,使用string的length属性即可

字符串拼接,使用+即可

++注意点:++

要区分好相加的变量到底是字符串还是数字

上图代码中18行是数字相加,19行是字符串相加,得到的结果是不一样的,如下图:

7.2boolean布尔类型

boolean在参与运算的时候,被当做1和0来看待

由此可说明,++当a = true的时候,代表数值是1,类型是boolean,但是当给a加上1后,它的类型是number++

当然,false也是一样的道理

7.3. undefined 未定义数据类型

这个undefined意味着什么?意味着只是给一个变量定义了,但是并没有给它初始化

  • undefined和字符串进行相加,结果是进行字符串拼接
  • undefined和数字进行相加,结果为NaN

7.4null类型

表示当前变量是一个空值

注意这里与undefined作区分,undefined是只是定义,但未给数值对其进行初始化,而null是被初始化了的,被赋值了的,只不过这个值是个空值

八.运算符

这里着重讲解:

  • ==比较的是变量的内容
  • ===比较的是内容+数据类型

如果只是比较内容,那结果就是true,如果是既比较内容,又比较类型,那就是false

九.JS里面的条件语句

9.1.1 if语句

这里的++prompt语句++的作用是弹出一个文本输入框的对话框,让用户输入信息

9.1.2三元表达式

条件为真,则结果是表达式1,否则为表达式2

9.2 switch case语句

注意这里的这个num是string类型,所以说得先强制类型转换。那如何转换?

通过使用parseInt(num)

JS中的强制类型转换

  • Number() 将各种类型的值转换成数值
  • parseInt() 将字符串转换成整数
  • parsefloat()将字符串转换成浮点数
  • String()将其他类型的值转换成字符串

十.循环语句

10.1 while循环

10.2 continue循环

表示结束它这条语句之后的循环体内语句,直接进入下一条循环

10.3 break

表示结束掉整个循环

10.4 for循环

写100~200之间第1个3的倍数的数

十一.数组

11.1数组创建

第1种:使用new关键字创建

即:如果使用new来创建数组时,Array的A要大写!!

第2种:使用字面量方式创建[常用]

而且这里要注意:JS的数组中不要求元素是相同类型

(这一点和C,C++,Java等静态类型语言差别较大,但是Python等动态类型语言也是如此)

11.2获取数组元素

使用下标的方式访问数组(从0开始)

如果下标超出范围读取元素,则结果是undefined

注意上图中的16行,arr2又重新被赋值了,那么结果业也同时变化了,因为之前说过JS是一个动态类型语言

11.3新增数组元素

11.3.1通过修改length新增

如上图所示,超出范围读取的元素结果是undefined

11.3.2通过下标新增
11.3.2通过push进行++追加++元素(追加到新的数组中)

11.4删除数组中的元素

通过使用splice方法删除元素

相关推荐
sealaugh323 小时前
AI(学习笔记第十五课)从langchain的v0.3到v1.0
人工智能·笔记·学习
沈询-阿里3 小时前
AI Agent系列 - 1 什么是 ReAct Agent?
开发语言·javascript·ecmascript
snowfoootball3 小时前
12.9八股面经案例学习
学习
白帽子黑客杰哥3 小时前
CTF Web题目常用考点与解题技巧合集
前端·数据库·web安全·网络安全·ctf·信息收集
许___3 小时前
axios使用 CancelToken / AbortController 方法进行取消请求
前端·javascript
●VON3 小时前
从零构建可扩展 Flutter 应用:v1.0 → v2.0 全代码详解 -《已适配开源鸿蒙》
学习·flutter·开源·openharmony·开源鸿蒙
LYFlied3 小时前
Webpack详细打包流程解析
前端·面试·webpack·node.js·打包·工程化
明朝百晓生3 小时前
强化学习[page14]【chapter7】Temporal-Difference Learning (TD learning)
前端·html