视频地址:【千锋前端JavaScript全套教程_JS零基础完美入门到项目实战】 https://www.bilibili.com/video/BV1W54y1J7Ed/?share_source=copy_web&vd_source=b1cb921b73fe3808550eaf2224d1c155
目录
4、函数
4.1 函数
定义函数阶段
调用函数阶段
语法:函数名()
<script>
function fn() {
console.log('明天不下雨!')
}
fn()
</script>
函数返回值
注意形参和实参的区别
4.2 递归函数
一个函数调用它自身,此为递归
要设置折返点
求阶乘
<script>
function fn(n) {
if (n == 1) {
return 1
}
return n * fn(n-1)
}
// fn(100)
console.log(fn(5))
</script>
案例:斐波那契数列
4.3 作用域
作用域:一个变量可以在什么范围内使用
- 范围
- 全局作用域
- 私有作用域
- 使用
- 定义
- 访问 自己有就用自己的,自己没有用父级的,全局都没有,就报错
- 赋值 自己有给自己的赋值,自己没有给父级的赋值,全局都没有的话,就定义为全局的并且赋值
5、对象和数组数据类型
5.1 对象数据类型
引用数据类型
<script>
var obj = { hair: '没招'}
</script>
hair对应键值(key),‘没招’对应值,value。此为一个键值对。
对象就是一个键值对的集合,一个对象可以放很多个键值对。中间使用逗号分隔开。
对象内的值可以是任何数据类型,
举例
; <script>
// 创建一个对象
var obj = {
a: 100,
b: 50,
c: 'hi'
}
</script>
5.2 对象的操作
5.2.1 增
给对象增加一个键值对
方式二,中括号里写的是字符串形式
<script>
// 创建一个对象
var obj = {
a: 100,
b: 50,
c: 'hi'
}
// 方式一
obj.name = 'zhang'
// 方式二
obj['gender'] = 'female'
console.log(obj)
</script>
5.2.2 删
给对象删去一个键值对
<script>
// 创建一个对象
var obj = {
a: 100,
b: 50,
c: 'hi'
}
// 方式一
obj.name = 'zhang'
// 方式二
obj['gender'] = 'female'
// console.log(obj)
// 删除一个键值对
delete obj.name
// 方法二
delete obj['gender']
console.log(obj)
</script>
5.2.3 改
修改对象内某个键值对的值
与增加键值对的语法一致,如果没有这个键key,那么就增加这个键值对,如果有这个键,就修改这个键对应的值。
<script>
// 创建一个对象
var obj = {
a: 100,
b: 50,
c: 'hi'
}
// 方式一
obj.name = 'zhang'
// 方式二
obj['gender'] = 'female'
// console.log(obj)
// 删除一个键值对
delete obj.name
// 方法二
delete obj['gender']
// 修改一个键值对的值
// 方式一
obj.name = 'zhang'
// 方式二
obj['a'] = 1000
console.log(obj)
</script>
5.2.4 查
访问对象内某个键保存的值
<script>
// 创建一个对象
var obj = {
a: 100,
b: 50,
c: 'hi'
}
// 方式一
obj.name = 'zhang'
// 方式二
obj['gender'] = 'female'
// console.log(obj)
// 删除一个键值对
delete obj.name
// 方法二
delete obj['gender']
// 修改一个键值对的值
// 方式一
obj.name = 'zhang'
// 方式二
obj['a'] = 1000
console.log(obj)
// 查
// 语法一
console.log(obj.a)
// 语法二
console.log(obj['name'])
</script>
运行结果
5.3 数组数据类型
数组:有序 数据 的集合
var array = [100, true, 'abc'] ,索引从0开始
5.4 数组的操作
- 数组的操作
- 长度的操作
- 获取长度 console.log(数组.length)
- 设置长度 数组.length = 自己设置的长度
- 数据的操作
- 获取数据 console.log(数组[想获取第几个数据,索引])
- 设置数据 数组名[2] = 自己设置的数据
- 长度的操作
5.5 数组的遍历
很简单,不写笔记了。
5.6 冒泡排序
直接做个力扣题
/**
* @param {number[]} nums
* @return {number[]}
*/
var sortArray = function(nums) {
var temp = 0
for(i = 0; i < nums.length - 1; i++) {
for(j = 0; j < nums.length - 1 - i; j++) {
if(nums[j] > nums[j+1]) {
temp = nums[j]
nums[j] = nums[j + 1]
nums[j + 1] = temp
}
}
}
return nums
};
5.7 选择排序
思路忘记了
快速地学一遍
先写里面每一次的交换,最后写外面n轮的交换
/**
* @param {number[]} nums
* @return {number[]}
*/
var sortArray = function(nums) {
var temp = 0
var min
for(i = 0; i < nums.length - 1; i++) {
min = i
for(j = i + 1; j< nums.length; j++) {
if (nums[min] > nums[j]) {
min = j
}
}
if (min != i) {// 这里可以直接交换索引位置的元素,加上判断也是可以的
temp = nums[i]
nums[i] = nums[min]
nums[min] = temp
}
}
return nums
};