文章目录
- 1.什么是JavaScript?
- 2.基本使用及HelloWorld
- 3.浏览器控制台的使用
- 4.数据类型快速浏览
- 5.严格检查模式strict
- 6.字符串类型详解
- 7.数组类型详解
- 8.对象类型详解
- 9.分支和循环详解
- 10.Map和Set集合
- 11.函数的定义和参数获取
- 11.变量的作用域、let、const详解
- 12.方法的定义和调用、apply
- 13.Date
- 14.JSON对象(轻量级的数据交换格式)
- 15.面向对象原型继承
- 16.面向对象class继承
- 17.操作BOM对象(重点!!)
- 18.获取DOM节点
- 19.更新DOM节点
- 20. 删除DOM节点
- 21.创建和插入DOM节点
- 22.获取和设置表单的值
- 23.表单提交验证和前端密码的MD5加密(非常乱)
- 24.初识jQuery及公式
- 25.jQuery选择器
- 26.jQuery事件
- 27.jQuery操作DOM元素
1.什么是JavaScript?
JavaScript是一门直接上最流行的脚本语言
ECMAScript是JavaScript的一种标准规范
2.基本使用及HelloWorld
JavaScript快速上手:第一个JavaScript
设置弹窗alert
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>我的第一个JavaScript程序</title>
<!-- script标签内写JavaScript代码-->
<!-- <script !src="">-->
<!-- alert("hello world!");-->
<!-- </script>-->
<!-- 外部引入 注意:script标签必须成对存在-->
<script src="js/qd.js"></script>
<!-- 不用显示定义type,也默认就是JavaScript-->
<script type="text/javascript"> </script>
</head>
<body>
<!--这里也可以存放JavaScript代码-->
</body>
</html>
alert('hello world');
3.浏览器控制台的使用
控制台调试变量
控制台打印变量,相当于sout
源码
调试代码
控制台最常用
4.数据类型快速浏览
1.数据类型:
数值、文本、图形、音频、视频……
2.js不区分小数和整数,Number
123 // 整数123
123.1 //浮点数123. 1
1.123e3 //科学计数法
-99 //复数
NaN //not a numbe
Infinity //表示无限大
3.逻辑运算
&& 与
|| 或
! 非
4.比较运算符(很重要,相当于是JS的一个缺陷,坚持不要使用==比较)
=
==
等于(类型不一样,值一样,也会判断为true)
===
绝对等于(类型-样,值一样,结果true)
5.字符串
"abc" 'abc'
6.须知:NaN===NaN,这个与所有的数值都不相等,包括自
己只能通过isNaN(NaN)来判断这个数是否是NaN
7.空指针
null和undefined
●null空
●undefined 未定义
8.数组
Java的数值必须是相同类型的对象~,JS中不需要这样!
var arr = [1,2,3,4,5,'he11o' ,nu11,true]
取数组下标:如果越界了,就会
1 undefined
9.对象(所有变量都是用var关键字)
对象是大括号,数组是中括号
var person={
name:"suibian",
age:15,
tags:['js','java','web','66']
}
属性之间用逗号隔开,最后一个属性不需要添加逗号
10.变量
主要不能以数字开头
可以用$开头,也可以使用下划线
也可以使用中文
浮点数问题:(尽量避免使用浮点数,存在精度问题)
可以使用判断测试范围
5.严格检查模式strict
前提是IDEA设置了es6
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>严格检查模式</title>
<script !src="">
// 写js代码尽量带上严格检查模式↓ 避免出现js随意性产生的一些问题
//下面这行代码必须写在JS第一行
'use strict';
// 全局变量:尽量避免,因为太容易冲突
i=1;
// 另外局部变量尽量都是用let定义
let i=1;
</script>
</head>
<body>
</body>
</html>
6.字符串类型详解
转义字符
’ 单引号
\n 换行
\t table空格
\u4e2d \u#### Unicode字符
\x41 Ascll字符
多行字符串编写
使用esc按键上的字符,就可以编写多行字符串
<script>
'use strict'
var msg=
`
你好
nihao
hello world
`
</script>
模板字符串
let name="suibian";
let age=15;
let msg=`你好呀,${name}`
字符串长度
console.1og(str. length)
字符串的可变性(不可变)
console.log(msg)
VM127:1 你好呀,suibian
undefined
var student="student"
undefined
student[0]=1
1
console.log(student)
VM317:1 student
方法
1.小写转换成大写
console.log(msg)
VM127:1 你好呀,suibian
undefined
var student="student"
undefined
student[0]=1
1
console.log(student)
VM317:1 student
undefined
console.log(student.toUpperCase)
VM450:1 ƒ toUpperCase() { [native code] }
undefined
console.log(student.toUpperCase())
VM469:1 STUDENT
2.大写转换成小写
console.log(msg)
VM127:1 你好呀,suibian
undefined
var student="student"
undefined
student[0]=1
1
console.log(student)
VM317:1 student
undefined
console.log(student.toUpperCase)
VM450:1 ƒ toUpperCase() { [native code] }
undefined
console.log(student.toUpperCase())
VM469:1 STUDENT
undefined
console.log(student.toLowerCase())
VM495:1 student
undefined
3.其他方法
注意substring是[ )的意思,包前面不包后面的一个范围
7.数组类型详解
JS里面Array可以包含任意的数据类型
var arr=[1,2,3,4,5]
undefined
console.log(arr)
VM599:1 (5) [1, 2, 3, 4, 5]
0: 1
1: 2
2: 3
3: 4
4: 5
length: 5[[Prototype]]: Array(0)
undefined
数组的内容可以产生变化
修改数组的长度大于实际数组内容长度,数组的长度就会发生变化,只是会产生空的未被定义的内容,如果小于实际数组内容的长度,就会产生内容缺失,但是是可以运行的
indexOf:下标索引
arr=[1,2,3,4,5,6,"1","2"]
(8) [1, 2, 3, 4, 5, 6, '1', '2']
arr.indexOf(0)
-1
arr.indexOf(1)
0
arr.indexOf(2)
1
arr.indexOf("1")
6
slice截取数组一部分的数据(类似于String中的SubString)
arr=[1,2,3,4,5,6,"1","2"]
(8) [1, 2, 3, 4, 5, 6, '1', '2']
arr.indexOf(0)
-1
arr.indexOf(1)
0
arr.indexOf(2)
1
arr.indexOf("1")
6
arr.slice(2)
(6) [3, 4, 5, 6, '1', '2']
push、pop 尾部添加元素、去掉尾部第一个元素
arr.push("a","b")
10
arr
(10) [1, 2, 3, 4, 5, 6, '1', '2', 'a', 'b']
arr.pop()
'b'
arr
(9) [1, 2, 3, 4, 5, 6, '1', '2', 'a']
push是往尾部添加元素
pop是排除掉最后一个元素
unshift、shift 头部添加元素、去掉头部第一个元素
arr=[1,2,3,4,5]
(5) [1, 2, 3, 4, 5]
arr.unshift("a","b")
7
arr
(7) ['a', 'b', 1, 2, 3, 4, 5]
arr.shift
ƒ shift() { [native code] }
arr.shift()
'a'
unshift往头部开始加入元素
shift是去掉头部的第一个元素
shift括号里面添加任何数字都是去掉第一个元素
arr.sort()排序
arr=["A","D","C"]
(3) ['A', 'D', 'C']
arr.sort()
(3) ['A', 'C', 'D']
arr.reverse()元素反转
arr=["A","D","C"]
(3) ['A', 'D', 'C']
arr.sort()
(3) ['A', 'C', 'D']
arr.reverse()
(3) ['D', 'C', 'A']
arr.concat()返回数组、没有修改数组
arr=["A","D","C"]
(3) ['A', 'D', 'C']
arr.sort()
(3) ['A', 'C', 'D']
arr.reverse()
(3) ['D', 'C', 'A']
arr.concat(1,2,3)
(6) ['D', 'C', 'A', 1, 2, 3]
arr
(3) ['D', 'C', 'A']
join是数组内的元素用某连接符号连接起来
arr.join('-')
'D-C-A'
多维数组
arr = [[1,2],[3,4],["5","6"]];
arr[1] [1]
4
8.对象类型详解
设置若干个对象
JS中所有的键都是字符串,值是任意对象
var 对象名={
属性名:属性值
属性名:属性值
属性名:属性值
}
//定义了一个person对象,他有四个属性
var person={
name:"suibian",
age:15,
length:20
}
使用键值对,也就是对象属性:对象值,多个属性之间用逗号隔开,最后一个属性不加逗号
对象赋值
person.name="suibian1";
使用一个不存在的属性报错
person.hah
undefined
动态删减属性
delete person.name
true
person
{age: 15, length: 20}
动态添加属性
person.haha=1
1
查找对象值
'age' in person
true
'toString' in person
true
判断一个属性是否是这个对象自身拥有的
person.hasOwnProperty('age')
true
person.hasOwnProperty('toString')
false
9.分支和循环详解
if判断
var age=3;
if (age>3){
alert("suibian")
}else{
alert("maiyou")
}
while、do while循环语句
while (age<100){
age=age+1;
console.log(age)
}
do{
age=age+1;
console.log(age)
}while(age>3)
避免死循环,例如弹窗永远关不掉
while(true){
alert(123)
}
for循环
//快捷fori,和java的i.for有一点点不一样
for (let i = 0; i < 100; i++) {
console.log(i)
}
遍历数组
var age=[12,456,8,78,7156,4,878,7,489]
age.forEach(function (value){
console.log(value)
})
for……in
for (var num in age){
// if (age.hasOwnProperty(num)){
//
// }
console.log(age[num])
}
最常用↓↓↓↓也可以遍历Map以及字符、数组等等
for (var x of age){
console.log(x)
}
遍历Set
var set = new Set([5,6,7]);
for (1et x of set) {
console.1og(x)
}
遍历Map
var map = new Map([["tom" ,100],["jack" , 90],["haha" ,80]]);
for (1et x of map){
console.log(x)
}
10.Map和Set集合
检查有没有报错,需要ES6,ES6新特性
new Set();
new Map();
Map集合
new Set();
new Map();
var map=new Map([['tom',100],['jack',90],['jary',10]]);
var name=map.get('tom');// 通过key值获得value
console.log(name);
map.set('admin',20);//新增元素
map.delete("tom")//删除元素
Set集合(set是无序不重复的集合)
var set=new Set([1,1,1,1,3,4])
下面的是浏览器调试台测试
Set(3) {1, 3, 4}
set.add(1)
Set(3) {1, 3, 4}
set.add(8)
Set(4) {1, 3, 4, 8}
set.delete(1)
true
set
Set(3) {3, 4, 8}
查看是Set否包含某元素
console.log(set.has(3))
VM322:1 true
undefined
Iterator遍历Set中的元素
ES6新特性,因为for in有漏洞,遍历下标的时候会将name,age等属性遍历进去
11.函数的定义和参数获取
定义方式一、
JS里面所有的函数都是用function定义
-旦执行到return代表函数结束,返回结果!
如果没有执行return,函数执行完也会返回结果,结果就是undefined
function abs(x){
if (x>0){
return x=1
}else {
return x=0
}
}
定义方式二、
这种就是匿名内部类的写法
var abs=function (x){
if (x>0){
return x=1
}else {
return x=0
}
}
调用函数
abs(10)
手动抛出异常
JS可以传输任意的参数,但是也可以不传递参数,都不会报错
所以就需