JavaScript从零开始 学习记录(二)

news2025/3/1 9:38:52

前言

寒假花了大气力去整理公众号,因而一些任务没有完成,但没有关系,毕竟计划赶不上变化,接着学习,争取早日开发油猴脚本

笔记范围

从这节视频到那节视频结束

课程目标

  • 能够知道为什么要有数组
  • 能够创建数组
  • 能够获取数组中的元素
  • 能够对数组进行遍历
  • 能够给数组新增一个元素
  • 能够独立完成冒泡排序的案例

数组概念

数组是指 一组数据的集合,其中每个数据被称作 元素,在数组中可以 存放任意类型的元素。数组是一种将 一组数据存储在单个变量名下 的优雅方式

数组创建

利用关键字 new 创建数组

数组字面量是方括号 [ ]

数组的索引:用来访问数组元素的序号(数组下标从0开始)

可以通过”数组名[索引]"的形式来获取数组中的元素

在这里插入图片描述

在这里插入图片描述

遍历数组

遍历:将数组中的每个元素从头到尾都访问一次

在这里插入图片描述

数组的长度

使用 “数组名.length” 可以访问数组元素的数量(数组长度)

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

数组求和、求平均值、求最大值

想要输出多个变量,用逗号分隔即可

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

数组转为字符串

在这里插入图片描述

在这里插入图片描述

数组中新增元素

  • 通过length长度
  • 通过修改索引号

不要直接对数组名赋值
在这里插入图片描述

在这里插入图片描述

数组元素赋值

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

筛选数组

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

数组案例

通过案例熟练掌握知识点

数组去重(删除指定数组元素)

在这里插入图片描述

在这里插入图片描述

数组翻转

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

冒泡排序

把一系列数据按照一定顺序 进行排列显示

观察过程,总结规律,书写代码

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

课程目标

  • 能够说出为什么需要函数
  • 能够根据语法书写函数
  • 能够根据需求封装函数
  • 能够说出形参和实参的传递过程
  • 能够使用函数的返回值
  • 能够使用arguments获取函数的参数

函数的概念

在JS里面,可能会定义非常多的相同代码 或 功能相似的代码,这些代码可能需要大量重复使用

虽然for循环语句也可能实现简单重复操作,但比较有局限性,此时就要用到 JS中的函数

函数:就是封装了一段可被重复调用执行的代码块。通过此代码块可以实现大量代码的重复使用

函数的使用

函数使用分为两步:声明函数 和 调用函数

注意: 声明函数本身并不会执行代码,只有调用函数时才会执行函数体代码

函数封装:把一个或多个功能通过函数的方式封装起来,对外只提供一个简单的函数接口

  • 简单理解:封装类似于将电脑配件整合组装到机箱中(类似快递打包)

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

函数的参数

  • 形参:在声明函数的小括号里
  • 实参:在函数调用的小括号里

参数个数不限

参数说明
形参形式上的参数 函数定义的时候 传递的参数 当前并不知晓属性
实参实际上的参数 函数调用时 传递的参数 实参传给形参

参数的作用:在函数内部某些值不固定,可以通过参数在调用函数时传递不同的值进去

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

多个参数案例

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

形参与实参匹配

在这里插入图片描述
在这里插入图片描述
形参的个数可以和实参不匹配,但结果不可预计,要尽量匹配

函数的返回值

函数只是实现某种功能,需要将处理的结果返回给调用者

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

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

return 注意事项

在这里插入图片描述

在这里插入图片描述

通过榨汁机看透函数

在这里插入图片描述

素数判断

在这里插入图片描述

arguments的使用

  • 当不确定有多少个参数传递时,可以用arguments获取
  • 在Javascript中,arguments实际上是当前函数的一个内置对象
  • 所有函数都内置了一个arguments对象,arguments对象存储了传递的所有实参

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

在这里插入图片描述

函数案例

在这里插入图片描述

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

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

函数调用另一函数

因为每个函数都是独立的代码块,用于完成特殊任务,因此经常会用到函数互相调用的情况

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

函数声明方式

  • 利用函数关键字自定义函数(命名函数)
  • 函数表达式

在这里插入图片描述

课程目标

  • 能够说出JavaScript的两种作用域
  • 能够区分全局变量和局部变量
  • 能够说出如何在作用域链中查找变量的值

作用域

变量在某个范围内起作用和效果,提高程序可靠性,更重要的是减少命名冲突

变量作用域分类

分为全局变量和局部变量

注意: 在函数内部,没有声明直接赋值的变量属于全局变量

执行效率来看全局变量和局部变量

(1)全局变量 只有浏览器关闭才会销毁,比较占内存资源
(2)局部变量 当程序执行完毕就会销毁,比较节约内存

局部变量只能在函数内部使用

es6之前,不支持块级作用域

块级作用域 {}

作用域链

概念:内部函数访问外部函数的变量,采取的是链式查找的方式来决定取那个值,这种结构成为作用域链

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

课程目标

  • 能够知道解析器运行JS分为哪两步
  • 能够说出变量提升的步骤和运行过程
  • 能够说出函数提升的步骤和运行过程

预解析

JS运行机制

在这里插入图片描述

在这里插入图片描述

JavaScript代码是由浏览器中的JavaScript解析器来执行的。JavaScript解析器在运行JavaScript代码时分为两步:预解析和代码执行

预解析分为变量预解析(变量提升)和 函数预解析(函数提升)

变量提升 把所有的变量声明提升到当前作用域最前面 不提升赋值操作

函数提升 把所有的函数声明提升到当前作用域最前面 不调用函数

预解析案例

在这里插入图片描述

在这里插入图片描述

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

课程目标

  • 能够说出为什么需要对象
  • 能够使用字面量创建对象
  • 能够使用构造函数创建对象
  • 能够说出new的执行过程
  • 能够遍历对象

对象

对象是一个具体的事物

在JavaScript中,对象是一组无序的相关属性和方法的集合,所有的事物都是对象

对象是由属性和方法组成的

  • 属性:事物的特征,在对象中用属性来表示
  • 方法:事物的行为,在对象中用方法来表示

为什么需要对象?

在这里插入图片描述

创建对象

在JavaScript中,现阶段有三种方式创建对象

  • 利用字面量创建对象
  • 利用new Object创建对象
  • 利用构造函数创建对象

字面量创建对象

对象字面量:{} 包含了表达对这个具体事物(对象)的属性和方法

  • 对象的属性和方法采用键值对形式
  • 方法冒号后面跟的是一个匿名函数

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

new Object创建对象

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

构造函数

问:为什么要使用构造函数?
答:因为前面两种创建对象的方式一次只能创建一个

构造函数:把对象里面一些相同的属性和方法抽象出来封装到函数里面

构造函数封装的是对象,普通函数封装的是代码

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

构造函数和对象

  • 构造函数,如Star(),抽象了对象的公共部分,封装到了函数里面,泛指某一大类
  • 创建对象,如new Star(),特指某一个,通过new 关键字创建对象的过程称为对象实例化

在这里插入图片描述

new关键字执行过程

1️⃣new 构造函数可以在内存中创建一个空的对象
2️⃣this 就会指向刚才创建的空对象
3️⃣执行构造函数里面的代码 给这个空对象添加属性和方法
4️⃣返回这个对象

遍历对象

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

课程目标

  • 能够说出什么是内置对象
  • 能够根据文档查询指定API的使用方式
  • 能够使用 Math 对象的常用方法
  • 能够使用Date对象的常用方法
  • 能够使用Array对象的常用方法
  • 能够使用String对象的常用方法

内置对象

  • JavaScript中的对象分为3种:自定义对象、内置对象、浏览器对象
  • 前面两种对象是JS基础 内容,属于 ECMAScript;而浏览器对象属于JS独有,JS API讲解
  • 内置对象指JS语言自带的一些对象,这些对象供开发者使用,并提供了一些常用的或最基本而必要的功能
  • 内置对象最大的优点是帮助快速开发
  • JavaScript提供了多个内置对象:Math、Date、Array、String等

查文档

MDN:https://developer.mozilla.org/zh-CN

Mozilla开发者网络(MDN)提供了有关开放网络技术(Open Web)的信息,包括HTML、CSS、万维网和HTML5应用的API

如何学习对象中的方法

  1. 查阅该方法的功能
  2. 查看里面参数的意义和类型
  3. 查看返回值的意义和类型
  4. 通过demo测试一下

Math对象

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
猜数字游戏
在这里插入图片描述
猜数字游戏(限制次数)
在这里插入图片描述

Date对象

在这里插入图片描述
在这里插入图片描述
格式化日期

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

在这里插入图片描述

获取日期的总的毫秒数

Date对象时基于1970年1月1日(世界标准时间)起的毫秒数

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

倒计时

时间戳转换为时分秒

转换公式如下:

  • d = parseInt(总秒数/60/60/24); // 计算天数
  • h = parseInt(总秒数/60/60%24); // 计算小时
  • m = parseInt(总秒数/60%60); // 计算分钟
  • s = parseInt(总秒数%60); // 计算秒数

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

Array对象

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

检测是否为数组

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

数组增删元素

添加

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
        var arr = [1, 2, 3];
        // arr.push(4,'pink');
        // push 给数组追加新元素 处理完毕返回新数组元素
        console.log(arr.push(4, 'pink'));
        
        console.log(arr);
        // unshift 在数组开头 添加一个或多个元素 
        // 处理完毕返回新数组长度
        console.log(arr.unshift('red', 'purple'));

        console.log(arr);

        // pop 删除数组最后一个元素 一次只能删除一个 处理完毕 返回删除元素值
        console.log(arr.pop());

        console.log(arr);

        // shift 删除数组 第一个元素 一次只能删一个 
        console.log(arr.shift());

        console.log(arr);
    </script>
</head>
<body>
    
</body>
</html>

在这里插入图片描述

翻转数组

在这里插入图片描述

在这里插入图片描述

数组排序

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

获取数组元素索引

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

数组去重

核心算法:先遍历旧数组,然后拿着旧数组元素去查询新数组,如果该元素在新数组里面没有出现过,就添加,否则不添加

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

数组转为字符串

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

String对象

基本包装类型

为了方便操作基本数据类型,JavaScript还提供了三个特殊的引用类型:String、Number和Boolean

基本包装类型 就是把 简单数据类型包装成为复杂数据类型,这样数据类型就有了属性和方法

在这里插入图片描述

字符串不可变

指的是里面的值不可变,虽然看上去可以改变内容,但其实是地址变了,内存中新开辟了一个内存空间

根据字符返回位置

在这里插入图片描述

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

在这里插入图片描述

根据位置返回对应字符

方法名说明使用
charAt(index)返回指定位置的字符(index 字符串的索引号)str.charAt(0)
charCodeAt(index)获取指定位置处字符的ASCII码(index索引号)str.charCodeAt(0)
str[index]获取指定位置处字符HTML5,IE8+支持 和 charAt()等效

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

统计出现最多的字符和次数

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

字符串操作方法

连接字符串、截取字符串

在这里插入图片描述
在这里插入图片描述
替换字符和转换为数组

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

课程目标

  • 能够说出简单数据类型的内存分配
  • 能够说出复杂数据类型的内存分配
  • 能够说出简单类型如何传参
  • 能够说出复杂类型如何传参

简单数据类型与复杂数据类型

简单类型又称为基本数据类型或者 值类型,复杂类型又称为引用类型

  • 值类型:简单数据类型/基本数据类型,在存储变量中存储的是值本身,因此称为值类型

    • string、number、boolean、undefined、null
  • 引用类型:复杂数据类型,在存储时变量中存储的仅仅是地址(引用),因此叫做引用数据类型

    • 通过new关键字创建的对象(系统对象、自定义对象),如Object、Array、Date等

堆和栈

堆栈空间分配区别:

  • 栈(操作系统):由操作系统自动分配释放存放函数的参数值、局部变量的值等。其操作方式类似于数据结构中的栈;简单数据类型存放到栈里面

  • 堆(操作系统):存储复杂类型(对象),一般由程序员分配释放,若程序员不释放,由垃圾回收机制回收。复杂数据类型存放到堆里

注意: JavaScript中没有堆栈概念,通过堆栈概念,可以更容易理解代码的一些执行方式

引用类型变量里存放的是地址,真正的对象实例存放在堆空间

在这里插入图片描述

简单数据类型传参

简单数据类型变量名看成房子,变量值看成入住者

房子永远不会变,但入住者也就是变量值随着操作就会发生变化

复杂数据类型传参

复杂数据类型变量名看成房子,变量值看成地址指向另一个房子

房子不会变,地址也不会变,但所指向的另一个房子内容却会发生改变

结语

这部分内容,前期学的挺得劲儿,因为很系统,触类旁通,让我对C语言、Python、Java进行了一次体系回顾,发现了相同体系结构,所以效果很好

但到了中期,感兴趣的内容可以像着了魔学下去,不感兴趣的阻碍着我,为此改变了学习方针克服了

后期就是感兴趣就多学,不感兴趣就规定一天学多少节,这不就学完了,下一步就是我最感兴趣的部分

学完后就打算研究油猴脚本开发了,已经有需求和应用场景了,加油,奥里给~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/379015.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

“来源可靠、程序规范、要素合规”与“四性”

《从技术可行性的视角看电子档案的“四性”》一文中已经明确&#xff0c;笔者认为的电子档案“四性”是指“真实性、完整性、可用性和安全性”。而《从特斯拉“刹车失灵”事件看电子档案的法定要求》一文中&#xff0c;笔者对于“来源可靠、程序规范、要素合规”的解读如下&…

Qt基础之三十:百万级任务并发处理

在实际的开发过程中,经常会遇到要处理大量任务场景,比如说压缩文件夹中的所有文件、对文件夹中的所有文件加密、上传文件夹中的所有文件到ftp等等。这里说百万级并不夸张,理论上文件夹中有任意多个文件都是可以的。 本文以压缩文件夹中的100万张jpg图片为例,压缩工具使用的…

外卖扫码点餐系统源码 后台管理端+商家端+门店端+小程序用户端源码

外卖点餐 堂食点餐 扫码点餐 本套扫码点餐系统源码基于java语言开发&#xff0c;移动端原生小程序&#xff0c;SaaS模式。代码完整&#xff0c;带部署调试视频。 系统由总后台管理端商家端门店端小程序用户端组成&#xff0c;支持扫码点单、计费结账、出菜上菜、菜品管理、菜…

【办公类-19-02】办公中的思考——Python批量制作word文本框的名字小标签,用A4word打印(植物角、家长会、值日生)

背景需求&#xff1a; 2月28日去小班带班&#xff0c;看到班主任制作了一些小手印花束作为家长会的家长座位提示&#xff0c;上面贴着“”圆形白色的幼儿名字贴”。 我立刻想起了制作的过程——在word中插入文本框&#xff0c;然后复制无数个文本框&#xff0c;摆好位置&#…

【AI绘画】绝美春天插画,人人都是插画师

春天&#xff0c;自然界重新苏醒&#xff0c;生机勃勃&#xff0c;百花争艳&#xff0c;万籁俱寂。一切都被新的生命活力所染上。春风拂面&#xff0c;一股清新的空气流过&#xff0c;仿佛带着一种神秘的力量&#xff0c;让人心旷神怡&#xff0c;心情舒畅、轻松愉悦。 突然&a…

549、RocketMQ详细入门教程系列 -【消息队列之 RocketMQ(三)】 2023.02.28

目录一、Spring 整合 RocketMQ1.1 消息生产者1.2 消息消费者1.3 Spring 配置文件1.4 运行实例程序二、参考链接一、Spring 整合 RocketMQ 不同于 RabbitMQ、ActiveMQ、Kafka 等消息中间件&#xff0c;Spring 社区已经通过多种方式提供了对这些中间件产品集成&#xff0c;例如通…

WebRTC Opus编码器的创建与参数细节分析( sdp -> native )

这几天在做一些WebRTC音频改进方面的调查工作&#xff0c;在阅读Chromium源码的过程中&#xff0c;就顺便记录下来&#xff0c;便于日后回顾。本文基于Chromium 85源码分析&#xff0c;由于Chromium的快速发展&#xff0c;很有可能不适合于跨度太大的Chromium版本。大家知道Opu…

QT学习14:QtXlsx操作Excel表

一、前言操作excel方式有&#xff1a;QAxObject 和QtXlsx区别&#xff1a;Qt自带的QAxObject库操作excel的前提是电脑已经安装微软的Office&#xff08;包含EXCEL&#xff09;&#xff0c;而QtXlsx可以直接使用免装Office且操作更简单。二、QtXlsx操作示例参考&#xff1a;http…

C筑基——深入理解内存对齐

目录1 前言2 正文2.1 为什么要有内存对齐&#xff1f;2.2 内存对齐原则2.2.1 基本数据类型是自然对齐的2.2.2 包含基本数据类型成员的结构体套用结构体内存对齐原则来分析使用 gdb 查看这两个结构体的成员内存位置结构体类型变量是自然对齐的吗&#xff1f;2.2.3 数组类型2.3 修…

今天 4 点,龙蜥自动化运维平台SysOM 2.0的诊断中心功能介绍 | 第 66-68 期

本周 3 期「龙蜥大讲堂」预告来啦&#xff01;我们邀请了系统运维 SIG Contributor 阙建明分享《SysOM 2.0 诊断中心功能介绍》&#xff0c;龙蜥社区云原生机密计算 SIG Maintainer、Intel 高级云计算软件工程师黄晓军分享《Intel HE Toolkit 介绍》主题演讲&#xff0c;龙蜥社…

【Linux】操作系统与Linux — Linux概述、组成及目录结构

目录 一、什么是操作系统&#xff1f;都有那些&#xff1f; 二、Linux概述 三、Linux组成 三、Linux目录结构 四、Linux目录结构 &#x1f49f; 创作不易&#xff0c;不妨点赞&#x1f49a;评论❤️收藏&#x1f499;一下 一、什么是操作系统&#xff1f;都有那些&#x…

频率信号转电压或电流信号隔离变送器0-1KHz /0-5KHz /0-10KHz转0-2.5V/0-5V/0-20mA

主要特性:>> 精度等级&#xff1a;0.2级>> 全量程内极高的线性度&#xff08;非线性度<0.1%&#xff09; >> 辅助电源/信号输入/信号输出&#xff1a; 2500VDC 三隔离>> 辅助电源&#xff1a;5VDC&#xff0c;12VDC&#xff0c;24VDC等单电源供电&g…

2020蓝桥杯真题约数个数(填空题) C语言/C++

题目描述 本题为填空题&#xff0c;只需要算出结果后&#xff0c;在代码中使用输出语句将所填结果输出即可。 1200000 有多少个约数&#xff08;只计算正约数&#xff09;。 运行限制 最大运行时间&#xff1a;1s 最大运行内存: 128M 所需变量 int a 1200000;//初始最大数 i…

模式识别 —— 第一章 贝叶斯决策理论

模式识别 —— 第一章 贝叶斯决策理论 前言 新的学期开始了&#xff0c;当然是要给不爱吃香菜的月亮记录学习笔记呀~ 没多久了&#xff0c;待夏花绚烂之时~人山人海&#xff0c;我们如约而至&#xff01; 以后清河海风 溶溶月色 共赏之人 就在身侧 mua~ 文章目录模式识别 —…

【服务器数据恢复】HP EVA存储lun丢失的数据恢复案例

服务器故障&检测&分析&#xff1a; 某品牌EVA存储设备中的RAID5磁盘有两块硬盘掉线&#xff0c;lun丢失。硬件工程师对故障服务器进行物理故障检测&#xff0c;发现掉线硬盘能够正常读取&#xff0c;无物理故障&#xff0c;也没有发现坏道。 故障服务器掉线硬盘没有物理…

深度理解Redux原理并实现一个redux

Redux的作用是什么 Redux的作用在于实现状态传递、状态管理。在这里你可能会说了&#xff0c;如果是状态传递&#xff0c;那我props的传递不也是可以达到这样的效果吗&#xff1f;context上下文方案不也是可以达到这样的效果吗&#xff1f;没错&#xff0c;是这样的&#xff0…

汇川SV660N与基恩士 KV7500 控制器调试说明

1. 伺服相关部分配置 1.1 伺服相关版本 SV660N 试机建议使用“SV660N-Ecat_v0.09.xml”及以上设备描述文件。 SV660N 单板软件版本建议为“H0100901.4”及更高版本号。 1.2 相关参数说明 SV660N 对象字典中 60FD 的含义较 IS620N 有所更改&#xff1a;bit0、1、2 分别为负限位…

移动字母--降维与DFS

一、题目描述 2x3=6 个方格中放入 ABCDE 五个字母,右下角的那个格空着。如下图所示。 和空格子相邻的格子中的字母可以移动到空格中,比如,图中的 C 和 E 就可以移动,移动后的局面分别是: A B D E C A B C D E 为了表示方便,我们把 6 个格子中字母配置用一个串表示出…

如何创建出实用的员工手册?

员工手册主要是企业内部的人事制度管理规范&#xff0c;包含企业规章制度和企业文化&#xff0c;同时还起到了展示企业形象、传播企业文化的作用。它既覆盖了企业人力资源管理的各个方面规章制度的主要内容&#xff0c;又因适应企业独特个性的经营发展需要而弥补了规章制度制定…

【HTML】列表结构

列表结构HTML效果HTML <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdev…