JavaScript
[toc]
1.初识JavaScript
1.1什么是JavaScript?
JavaScript是运行在浏览器上的脚本语言。简称js
JavaScript运行在浏览器的内存当中
JavaScript程序不需要我们程序员手动编译,编写完源代码之后,浏览器直接打开解释执行
JavaScript的‘目标程序’以普通文本形式保存,这种语言叫做‘脚本语言’
脚本语言:不需要编译,运行过程中由js解释器逐行来进行解释并执行
现在也可以基于Node.js技术进行服务器编程
js是一门事件驱动型的编程语言
注意:事件与事件句柄的区别是:事件句柄是在事件单词前加一个on
事件句柄是以HTML标签的属性存在的
当页面打开的时候,js代码并不会执行,只是把js代码注册到对应的事件句柄上,当事件句柄发生后,注册在句柄上的js代码会被浏览器自动调用
js语句结束可以使用分号也可以不使用
1.2 JavaScript的作用
表单动态校验(密码强度检测)(js最初的目的)
网页特效
服务器端开发(Node.js)
桌面程序(Electron)
APP(Cordova)
控制硬件-物联网(Ruff)
游戏开发(cocos2d-js)
1.3 HTML/CSS/JS的关系
HTML/CSS标记语言-描述类语言
HTML决定网页结构和内容(决定看到什么),相当于人的身体
CSS决定网页呈现给用户的模样(决定好不好看)。相当于衣服
JS脚本语言-编程类语言
实现业务逻辑和页面控制(决定功能),相当于人的各种动作
1.4 浏览器执行JS
浏览器分为两部分--渲染引擎和JS引擎
渲染引擎:用来解析HTML和CSS,俗称内核,比如Chrome的blink
JS引擎:也称为JS解释器。用来读取网页中的JavaScript代码,对其处理后运行,比如Chrome的V8
浏览器本身并不会执行js代码,而是通过内置JavaScript引擎来执行js代码,。js引擎执行代码时会逐行解释每一句源码,然后由计算机去执行,所以JavaScript语言归为脚本语言
1.5 js组成

ECMAScript是由ECMA国际(原欧洲计算机制造商协会)进行标准化的一门编程语言,这种语言在万维网上应用广泛,往往没称为JavaScript或JScript,但实际上后两者是ECMAScript语言的实现和扩展

DOM-文档对象模型
文档对象模型是W3C组织推荐的处理可扩展标记语言的标准编程接口,通过DOM提供的接口可以对页面上的各种元素进行操作(大小位置等)
BOM-浏览器对象模型
浏览器对象模型,它提供了独立于内容的、可以与浏览器窗口进行互动的对象结构。通过BOM可以操作浏览器窗口,比如弹出框、控制浏览器跳转、获取分辨率等
2.HTML中怎么嵌入js代码
直接把js代码写入HTML标签属性中
以脚本块的方式
注意:暴露在脚本块当中的程序,在页面打开的时候执行,并且遵守自上而下的顺序依次逐行执行
==脚本块可以出现在任意位置,且可以出现多次==
注意单双引号的使用:在HTML中推荐使用
双引号,在js中推荐使用单引号单独js文件,需要时导入
注意:js代码文件中也会自上而下逐行执行
js文件可以被引入多次
3.js的注释
单行注释:// 单行注释
多行注释:/* 多行注释 */
4.JavaScript输入输出语句

5.标识符与关键字
标识符命名规则与规范按照java执行
命名规则
由字母、数字、下划线、美元符号组成
数字不能开头
严格区分大小写,长度无限制
不能出现关键字(name变量在某些浏览器中有定义,所以最好别使用)
标识符命名规范
包名都小写
类名、接口名:首字母大写,以后每个单词首字母大写
变量名、方法名:第一个单词首字母小写,后面每个单词首字母大写
常量名:字母都大写,多单词直接用下划线连接
关键字不需要刻意去记
6.js中的变量
变量就是一个存放数据的容器。我们可以通过变量名获取数据,甚至修改数据
变量的本质是程序在内存中申请的一块用来存放数据的空间
强类型: 强类型语言是一种强制类型定义的语言,一旦某一个变量被定义类型,如果不经过强制转换,则它永远就是该数据类型了,强类型语言包括Java、.net 、C++等语言。
弱类型:弱类型语言是一种弱类型定义的语言,某一个变量被定义类型,该变量可以根据环境变化自动进行转换,不需要经过显性强制转换。弱类型语言包括vb 、PHP、javascript、Python等语言。
JavaScript声明变量
var 变量名;
怎么给变量赋值
变量名 = 值;
同时声明多个变量:多个变量之间用逗号隔开
声明变量特殊情况

image-20220816103648530
JavaScript是一种弱类型语言,没有编译阶段,一个变量可以随意赋值
注意:系统默认赋值为undefined
5.1.全局变量与局部变量
全局变量
在函数体之外声明的变量属于全局变量
全局变量的生命周期:
浏览器打开时声明,浏览器关闭时销毁,尽量少用。因为全局变量会一直在浏览器的内存当中,耗费内存空间,能用局部变量尽量使用局部变量
局部变量
在函数体当中声明的变量,包括一个函数的形参
局部变量的生命周期:
函数开始执行时局部变量的内存空间开辟,函数执行结束之后,局部变量的内存空间释放
注意:若一个变量声明时没有加var关键字,则不管此变量在哪声明,都是全局变量
6.数据类型
在计算机中,不同的数据所需占用的存储空间是不同的,为了便于把数据分成所需内存大小不同的数据,充分利用存储空间,于是定义了不同的数据类型
原始类型
Undefined
Number
String
Boolean
Null
引用类型
Object以及Object的子类
数组
js中有一个运算符typeof,可以在程序的运行阶段动态的获取变量的数据类型
格式:typeof a == 'undefined'
运算符结果全为小写
undefined
number
string
boolean
object
function
注意:当变量赋值为Null时,typeof结果为object
注意:ES6(ECMAScript规范)之前只有六种数据类型,之后加了Symbol类型
Undefined类型
这种类型只有一个undefined值
当一个变量没有手动赋值,系统自动赋值undefined
Number类型
包括所有的数字以及NaN(不是数字),Infinity(无穷大)
==NaN==出现在运算结果本应是一个数字,最后的结果却不是一个数字
==Infinity==当除数为0时,结果为无穷大
Number.MAX_VALUE:数字型的最大值 Number.MIN_VALUE:最小值
isNaN函数
用法isNaN(数据),返回Boolean,表示是否为一个数字
parseInt()
parseInt(数据):可以将字符串自动转换为数字,并且取整数位
parseFloat()
parseFloat(数据):可以将字符串自动转换为数字
Math.ceil
Math.ceil(数据):向上取整
Boolean类型
包括true和false
Boolean()
Boolean(数据):将非布尔类型转换成布尔类型
一般是有就转换为真,没有就转换为假
Null类型
包括null
String类型
在js中字符串可以用单引号也可以用双引号
Object类型
是所有类型的超类,自定义的类默认继承Object
数组类型
6.1.null NaN undefined区别
数据类型不一样
null和undefined可以等同
注意:
==(等同运算符) 只比较值
===(全等运算符) 即比较值,也比较数据类型
7.js中的函数
函数就是一段完成某个特定功能且可以被重复利用的代码片段
注意:js中的形式参数列表相当于python中的默认值参数,若函数调用时不主动传参,则参数使用默认值undefined
回调函数
自己写出来一个函数,但是自己不调用这个函数,由其他程序负责调用该函数
例如事件注册的第一种方式
8.js的类
定义类的方法与new对象
注意:要是没有new就是函数,要是new则把函数看成类
9.js事件
blur
失去焦点
focus
获得焦点
keydown
键盘按下
keyup
键盘弹起
click
鼠标单击
dblclick
鼠标双击
mousedown
鼠标按下
mouseover
鼠标经过
mousemove
鼠标移动
mouseout
鼠标离开
mouseup
鼠标弹起
load
页面加载完毕
change
下拉列表选择项改变
reset
表单重置
submit
表单提交
select
文本被选定
注册事件的方式
9.1.js代码执行顺序
js中可以直接window.onload = 函数名来让函数在页面加载完后在执行,避免因代码执行顺序而导致的获取节点为空的错误
9.2.js键盘事件
10.js运算符之void
格式:void(表达式)
执行括号里的表达式但不返回任何结果
11.js的控制语句
if
switch
while
do.....while...
for循环
break
continue
12.js的DOM,BOM编程
ECMAScript是EAMA指定的262标准,JavaScript和script都准守这个标准,ECMAScript是JavaScript的核心语法
DMO(文档对象模型)编程是通过JavaScript对HTML中的dom结点进行操作,DOM是有规范的,DOM规范是w3c制定的
BMO(浏览器对象模型)编程是对浏览器本身操作,例如:前进。后退、地址栏、关闭窗口、弹窗等。由于浏览器有不同的厂家制造,所以BOM缺少规范,一般只是有一个默认的行业规范
两者的区别于联系
BOM的顶级对象是:window
DOM的顶级对象是:document
BOM包括DOM
13.innerHTML与innerText
相同点
两者都是属性
都是设置元素内部的内容
不同点
innerHTML会把后面的字符串当做一段HTML代码解释并执行
innerText即使后面是一段HTML代码,也只是将其当做普通的字符串
14.js的正则表达式
什么是正则表达式?有什么用?
正则表达式主要用在字符串格式匹配方面
大部分编程语言都支持正则表达式
.
匹配除换行符以外的任意字符
\w
匹配字母或数字或下划线或行子
\s
匹配任意的空白符
\d
匹配数字
\b
匹配单词的开始或结束
^
匹配字符串的开始
$
匹配字符串的结束
*
重复零次或更多次
+
重复一次或更多次
?
重复零次或一次
{n}
重复n次
{n,}
重复n次或更多次
{n,m}
重复n到m次
\W
匹配任意不是字母,数字,下划线,汉字的字符
\S
匹配任意不是空白字符的字符
\D
匹配任意不是数字的字符
\B
匹配不是单词开头或结束的位置
[^x]
匹配不是x的任意字符
[^aeiou]
匹配不是aeiou这几个字母的任意字符
[]
表示可以出现的字符
创建正则表达式对象
var regExp = /正则表达式(字符串)/flags
var regExp = new RegExp("正则表达式(字符串)","flags")
flags参数
i:忽略大小写
g:全文查找
m:多行查找(ES规范指定之后才支持m)
若是正则表达式则忽略m参数
正则对象的text函数
true/false = 正则表达式对象.text(用户填写的字符串)
15.内置类-Date
Date用来获取时间/日期
获取当前系统时间
把时间转换为本地语言环境的日期格式
自定制时间格式
16.周期函数setInterval
17.内置类Array
18.BOM编程
BOM编程中,window对象时顶级对象,代表浏览器窗口
18.1.window的close(),open()
18.2.弹窗
18.3.历史记录
18.4.设置顶级窗口
18.5.地址栏对象
总结:浏览器往服务器发请求方法:
表单form的提交
超链接
document.location
window.location
window.open()
直接在浏览器地址栏输入url
以上方法均可以携带数据给服务器,只有通过表单提交的数据才是动态的
19.json
什么是json?
JavaScript Object Notation,简称json
一种标准轻量的数据交换格式
主要用于数据交换
特点:体积小,易解析
市面上流行的数据交换格式一种是json一种是xml
xml特点:体积大,解析麻烦,但是优点是语法严谨
eval函数
eval函数的作用是把一段字符串当成js代码解释并执行
20.简单实战
21.jQuery基础
jQuery是一个轻量级的,写得少、做得多的JavaScript函数库
包含以下功能:
HTML元素选取
HTML元素操作
CSS操作
HTML事件函数
JavaScript特效和动画
HTML DOM遍历和修改
Ajax
Utilities
21.1.引入jQuery
从官方下载jQuery库,jQuery实际是一个JavaScript文件可以用JavaScript方式引入
[下载地址](Download jQuery | jQuery)
下载页面中有两个版本:
Production version:用于实际网站中,已被精简和压缩
Development version:用于测试和开发中(未被压缩,是可读的代码)
21.2.jQuery基本语法
查询HTML元素并对它们执行对应的操作
大多数情况下,jQuery函数位于document ready函数中
jQuery选择器
元素 元素
$('*')
选取所有元素
$(this)
选取当前HTML元素
$('p.intro')
选取class=intro的
元素
$('#intro')
选取id=intro的元素
$('p:first')
选取第一个
元素
$('ul li:frist')
选取每一个
的第一个
元素
$('ul li:first-child')
选取每一个
的第一个
元素
$('[href]')
选取带有href属性的元素
$('a[target="_blank"]')
选取所有target属性值等于'_blank'的元素
$('a[target!="_blank"]')
选取所有target属性值不等于'_blank'的元素
$(':button')
选取所有type=‘button’的和元素
$('tr:even')
选取偶数位置的
$('tr:odd')
选取奇数位置的
jQuery事件
鼠标事件键盘事件表单事件文档/窗口事件click
keypress
submit
load
dblclick
keydown
change
resize
mouseenter
keyup
focus
scroll
mouseleave
blur
unload
hover
获取内容和属性
获得内容三方法
text():设置或返回所选元素的文本内容
html():设置或返回所选元素的内容(包括HTML标记)
val():设置或返回表单字段的值
获得属性
attr('属性名'): 获取属性
attr('属性名','属性值'): 设置属性
最后更新于