type
status
date
slug
summary
tags
category
icon
password
JavaScript是前后端开发必须学习的内容,这里简单介绍JavaScript,参考视频放在文末,相关代码都在我的github上可自取
整体项目(笔记加代码)
1、什么是JavaScript
1.1 概述
JavaScript是一门世界上最流行的脚本语言
1.2 历史
ECMAScript可以理解成JavaScript的一个标准
2、快速入门
2.1 引入JavaScript
1、内部标签
2、外部引用
abs.js
test.html
2.2 基本语法入门
浏览器必备调试
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、字符串的可变性,不可变
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、继承
本质:查看对象原型
原型链
__ proto__:
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节点已经存在元素了,我们就不能这么干了!会产生覆盖
追加
效果:
创建一个新的标签,实现插入
insert
9、操作表单(验证)
表单是什么 form DOM树
- 文本框 text
- 下拉框 < select >
- 单选框 radio
- 多选框 checkbox
- 隐藏框 hidden
- 密码框 password
- ......
表单的目的:提交的信息
获得提交的信息
提交表单
10、jQuery
JavaScript
jQuery库,里面存在大量的Javascript元素
获取jQuery
选择器
事件
鼠标事件,键盘事件,其他事件
操作DOM
节点文本操作
css的操作
元素的显示和隐藏:本质
display : none
娱乐测试
未来ajax();
参考视频
相关代码
📎 参考网站
- Author:Chailyn
- URL:https://own.chailyncui.blog/article/JavaScript
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!