上周学习内容总结
作用域
全局作用域 局部作用域(函数)
作用域的查找规则
使用一个变量 如果 自己的作用域有 就直接拿来用 如果自己的作用域没有 没有就一直往上一级作用域查找 如果有就拿来用 直到找到 全局作用域 如果有 就拿来用 如果没有 -> 报错 xxx is not defined
作用域的赋值规则
修改一个变量 如果 自己的作用域有 就直接修改 如果自己的作用域没有 没有就一直往上一级作用域查找 如果有就直接修改 直到找到 全局作用域 如果有 就修改全局作用域的变量 如果没有 那就在全局先声明一个 再 赋值
递归
函数自己调用自己 写递归的时候 先写 结束条件
对象
var obj = {}
空对象
创建对象的方式
- 字面量创建
var obj = {}
- 内置构造函数
var obj = new Object()
操作对象
- 增
obj.name = "Jack"
obj["name"] = "Rose"
- 修改
obj.name = "Jack"
obj["name"] = "Rose"
- 删除
delete obj.name
delete obj["name"]
今日学习内容总结
数据类型分类
所有数据类型分为两个大类 基本数据类型 和 复杂数据类型
基本数据类型: number / string / boolean / undefined / null
复杂数据类型: object / function / array / …
创建一个空数组
var arr1 = []
var arr1 = new Array()
创建一个长度为 10 的数组
var arr2 = new Array(10)
创建一个有内容的数组
var arr3 = new Array(1, 2, 3)
var arr2 = [1, 2, 3]
数据类型之间存储的区别
存储空间分成两种 栈 和 堆
栈: 主要存储基本数据类型的内容
堆: 主要存储复杂数据类型的内容
基本数据类型是 值 之间的比较
复杂数据类型是 地址 之间的比较
数组常用方法
push 是用来在数组的末尾追加一个元素
pop 是用来删除数组末尾的一个元素
unshift 是在数组的最前面添加一个元素
shift 是删除数组最前面的一个元素
splice 是截取数组中的某些内容,按照数组的索引来截取
reverse 是用来反转数组使用的
sort 是用来给数组排序的
concat 是把多个数组进行拼接
join 是把数组里面的每一项内容链接起来,变成一个字符串
for in 循环
使用 for 循环来循环数组,因为 for 循环我们也可以设置成 0 ~ n 顺序增加
这个行为叫做 遍历
冒泡排序
先遍历数组,让挨着的两个进行比较,如果前一个比后一个大,那么就把两个换个位置。
数组遍历一遍以后,那么最后一个数字就是最大的那个了。
然后进行第二遍的遍历,还是按照之前的规则,第二大的数字就会跑到倒数第二的位置。
以此类推,最后就会按照顺序把数组排好了。
例如:将数组进行排列
var arr = [5, 39, 15, 80, 65, 25, 45]
for (k = 0; k <= arr.length; k++) {
for (var i = 0; i <= arr.length - 1 - k; i++) {
if (arr[i] > arr[i + 1]) {
var temp = arr[i]
arr[i] = arr[i + 1]
arr[i + 1] = temp
}
}
}
console.log(arr);