type
status
date
slug
summary
tags
category
icon
password
😀
JavaScript是前后端开发必须学习的内容,这里简单介绍JavaScript,参考视频放在文末,相关代码都在我的github上可自取
整体项目(笔记加代码)
notion image

1、什么是JavaScript


1.1 概述

JavaScript是一门世界上最流行的脚本语言

1.2 历史

ECMAScript可以理解成JavaScript的一个标准

2、快速入门


2.1 引入JavaScript

1、内部标签
2、外部引用
abs.js
test.html

2.2 基本语法入门

浏览器必备调试
notion image

2.3 数据类型

数据,文本,图形,音频,视频......
变量
变量名称 变量名 = 变量值
number
js不区分小数和整数,Number
字符串
'abc' "abc"
布尔值
true , false
逻辑运算
比较运算符
这是JS的一个缺陷,坚持不要用==比较
须知:
  • NaN===NaN,这个与所有的数值都不相等,包括自己
  • 只能通过 isNaN(NaN) 来判断这个数是否是NaN
浮点数的问题
尽量避免使用浮点数进行运算,存在精度问题!
null 和 undefined
  • null 空
  • undefined 未定义
数组
Java中必须是一系列相同类型的对象,JS中不需要这样,各种类型都可以放一块
区数组下标:如果越界了,就会
对象
对象是大括号,数组是中括号
每个属性之间使用逗号隔开,最后一个不需要添加
取对象的值

2.4 严格检查格式

3、数据类型


3.1 字符串

1、正常字符串我们使用单引号,或者双引号包裹
2、注意转义字符 \
3、多行字符串编写
4、模版字符串
5、字符串长度
6、字符串的可变性,不可变
notion image
7、大小写转换
8、student.indexOf('t')
9、截取字符
substring

3.2 数组

Array可以包含任意的数据类型
1、长度
注意:加入给arr.length 赋值,数组大小就会发生变化,如果赋值过小,元素就会丢失
2、indexOf,通过元素获得下标索引
字符串的"1"和数字 1 是不同的
3、slice() 截取Array的一部分,返回一个新的数组,类似于String中的substring
4、push() pop()
5、unshift() shift() 头部
6、排序 sort()
7、元素反转 reverse()
8、concat()
注意: concat() 并没有修改数组,只是会返回一个新的数组
9、连接符 join
打印拼接数组,使用特定的字符串连接
10、多维数组
数组:存储数据(如何存,如何取,方法都可以自己实现!)

3.3 对象

若干个键值对
JS中的对象,{.......}表示一个对象,键值对描述属性xxxx: xxxx,多个属性之间使用逗号隔开,最后一个属性不加逗号!
JavaScript的所有的键都是字符串,值是任意对象
1、对象赋值
2、使用一个不存在的对象属性,不会报错!
3、动态的删减属性
4、动态的添加,直接给新的属性
5、判断属性值是否在这个对象中! xxx in xxx!
6、判断一个属性是否是这个对象自身拥有的 hasOwnProperty()

3.4 流程控制

if判断
while循环,避免程序死循环
for循环
forEach循环
5.1 引入
for..in

3.5 Map和Set

map
Set:无序不重复集合

3.6 iterator

es6 新特性
通过for of实现遍历,for in 遍历下标
遍历map
遍历set

4、函数


4.1 定义函数

定义方法一
绝对值函数
一旦执行到 return 代表函数的结束,返回结果!
如果没有执行return,函数执行也会返回结果,结果就是undefined
定义方法二
这是一个匿名函数,但是可以把结果赋值给abs,通过abs就可以调用函数!
方法一和方法二等价
调用函数
参数问题:JavaScript可以传任意一个参数,也可以不传递参数
参数进来是否存在问题?
假设不存在参数,如何规避?
arguments
arguments是一个JS免费赠送的关键字;
代表,传递进来的所有的参数,是一个数组
问题:arguments 包含所有的参数,我们有时候使用多余的参数来进行附加操作,需要排除已有的参数
rest
ES6引入的新特性,获取除了已经定义的参数之外的所有参数...
rest参数只能写在最后面,必须用...标识。

4.2 变量的作用域

在JavaScript中,var定义的变量实际是有作用域的。
假设在函数体中声明,则在函数体外不可以使用~(非要实现的话,研究下闭包
如果两个函数使用了相同的变量名,只要在函数内部,就不冲突
假设,内部函数变量和外部函数变量,重名!
假设在JavaScript中函数查找变量从自身函数开始,由内向外查找,假设外部存在这个同名的函数变量,则内部函数会屏蔽外部函数的遍历变量
提升变量的作用域
结果:xundefined
说明:js执行引擎,自动提升了y的声明,但是不会提升变量y的赋值;
这个实在JavaScript建立之初就存在的特性。养成规范:所有的变量定义都放在函数的头部,不要乱放,便于代码的维护;
全局函数
全局对象 window
alert( ) 本身也是一个window的变量
Javascript 实际上只有一个全局作用域,任何变量(函数也可以视为变量),假设没有在函数作用范围内找到,就会向外查找,如果在全局作用于都没有找到,报错ReferenceError
规范
由于我们所有的全局变量都会绑定到我们的window上,如果不同的js文件,使用了相同的全局变量,冲突->如何能够减少冲突
把自己的代码全部放入自己定义的唯一的空间名字中,降低命名冲突的问题
jQuery
局部作用域 let
ES6 let关键字,解决局部作用域冲突问题!
常量const
在ES6之前,怎么定义常量;只有用全部大写字母命名的变量就是常量;建议不要修改值
在ES6 引入了常量关键字 const

4.3 方法

定义方法
方法就是把函数放在对象的里面,对象只有两个东西:属性和方法
this.代表什么?拆开上面的代码看看~
this是无法指向的,是默认只想调用它的那个对象
apply
在JavaScript中可以控制this指向

5、内部对象


标准对象

5.1 Date

基本使用
转换

5.2 JSON

json是什么
早期,所有的数据传输习惯使用XML文件
  • JSON是一种轻量级的数据交换格式
  • 其简洁和清晰的层次结构有效地提升了网络传输效率,使其成为理想的数据交换语言。其文件通常使用扩展名.json。
  • 它易于人阅读和编写,同时也易于机器解析和生成
在JavaScript一切皆为对象、任何JS支持的类型都可以用JSON来表示:
格式:
  • 对象都用{}
  • 数组都用[]
  • 所有的键值对都使用key:value
JSON字符串和JS对象的转化
很多人搞不清楚,JSON和JS对象的区别

5.3 Ajax

  • 原生的JS写法 xhr 异步请求
  • jQuey 封装好的 方法 $("#name").ajax("")
  • axios 请求

6、面向对象编程


原型对象
JavaScript、Java、C#...面向对象;javascript有些区别
  • 类:模板
  • 对象:具体实例
在JavaScript这个需要自己转换下思维方式!
  • 原型:
    class 继承
    class关键字,是在ES6引入的
    1、定义一个类,属性,方法
    2、继承
    本质:查看对象原型
    notion image
    原型链
    __ proto__:
    notion image

    7、操作BOM对象(重点)


    浏览器介绍
    JavaScript和浏览器的关系?
    JavaScript的诞生就是为了能够让他在浏览器中运行!
    BOM:浏览器对象模型
    • IE 6~11
    • Chrome
    • Safari
    • FireFox
    三方
    • QQ浏览器
    • 360浏览器
    window
    window 代表 浏览器窗口
    Navigator
    Navigator,封装了浏览器的信息
    大多数时候,我们不会使用navigator对象,因为会被人为修改!
    不建议使用这些属性来判断和编写代码
    screen
    代表屏幕尺寸
    location(重要)
    location 代表当前页面的URL信息
    document
    document 代表当前的页面,HTML DOM文件树
    获取具体的文档树节点
    获取 cookie
    劫持 cookie 原理
    服务器端可以设置cookie:httpOnly
    history
    history 代表浏览器的历史记录

    8、操作DOM对象(重点)


    DOM:文档对象模型
    核心
    浏览器网页就是一个DOM树形结构!
    • 更新:更新DOM节点
    • 遍历DOM节点:得到DOM节点
    • 删除:删除一个DOM节点
    • 添加:添加一个DOM节点
    • 要操作一个DOM节点,就必须要获得这个DOM节点
    获得DOM节点
    这是原生代码,之后我们尽量都是用jQuery
    更新节点
    操作文本
    • id1.innerText = '456'修改文本的值
    • id1.innerHTML = '<strong>123</strong>'可以解析HTML文本标签
    操作JS
    删除节点
    删除节点的步骤:先获取父节点,在通过父节点删除自己
    注意:删除多个节点的时候,children是在时刻变化的,删除节点的时候一定要注意
    插入节点
    我们获得了某个DOM节点,假设这个DOM节点是空的,我们通过innerHTML就可以增加一个元素了,但是这个DOM节点已经存在元素了,我们就不能这么干了!会产生覆盖
    追加
    效果:
    notion image
    创建一个新的标签,实现插入
    insert

    9、操作表单(验证)


    表单是什么 form DOM树
    • 文本框 text
    • 下拉框 < select >
    • 单选框 radio
    • 多选框 checkbox
    • 隐藏框 hidden
    • 密码框 password
    • ......
    表单的目的:提交的信息
    获得提交的信息
    提交表单
    notion image

    10、jQuery


    JavaScript
    jQuery库,里面存在大量的Javascript元素
    notion image
    获取jQuery
    选择器
    事件
    鼠标事件,键盘事件,其他事件
    notion image
    notion image
    操作DOM
    节点文本操作
    css的操作
    元素的显示和隐藏:本质 display : none
    娱乐测试
    未来ajax();

    参考视频

    相关代码

    📎 参考网站

    Pytorch(速成版笔记)上岸!拥抱盛大的世界
    • Cusdis
    • Utterance
    Chailyn
    Chailyn
    I will always be loyal to myself running towards ideal and freedom.
    Announcement
    🎉欢迎来到我的homepage🎉
    -- 感谢您的支持 ---
    吾生也有涯,而知也无涯
    旅行记录,与你分享路过的风景
    知识无价,学术blog上希望能帮到你
    -- 祝您所遇皆温柔,所感皆太阳 --
    更新(2024.12.12):
    更新文章 “摆烂日记:静默中的能量积蓄
     
     
     
    2024 Chailyn.

    ChailynCui BLOG | I will always be loyal to myself running towards ideal and freedom.

    Powered by NotionNext 4.3.1.