文章目录
1. for循环
1.1 语法
for (变量起始值; 终止条件; 变量变化量) {
// 循环体
}
退出循环:
1.2 for循环嵌套
2. 数组
2.1 数组是什么
数组(array)是一种可以按顺序保存数据的数据类型
2.2 数组的基本使用
1. 声明语法
let 数组名 = [数据1, 数据2, ..., 数据n]
构造函数法:
let arr = new Array(数据1, 数据2, ..., 数据n)
2. 取值语法
通过下标取值:
数组名[下标]
3. 一些术语
4. 遍历数组
for (let i = 0; i < 数组名.length; i++) {
数组名[i]
}
2.3 操作数组
“增” “删” “改” “查”
操作数组——新增
数组.push()
方法将一个或多个元素添加到数组的末尾,并返回数组的新长度
arr.push(元素1, ..., 元素n)
数组.unshift()
方法将一个或多个元素添加到数组的开头,并返回该数组的新长度
arr.unshift(元素1, ..., 元素n)
操作数组——删除
数组.pop()
方法从数组中删除最后一个元素,并返回该元素的值
arr.pop()
数组.shift()
方法从数组中删除开头一个元素,并返回该元素的值
arr.shift()
数组.splice()
方法删除指定元素
使用场景:
(1)随机抽奖,中奖的用户需要从数组里面删除,下一次就不会选他中奖了
(2)点击删除按钮,相关数据就会从商品数据中删除
arr.splice(start, deleteCount)
arr.splice(起始位置(索引号), 删除的元素个数)
2.4 冒泡排序
数组排序:数组.sort()
(默认为升序)
当没有参数传入时(arr.sort()),默认按照数组转成字符串后的结果每一位的Unicode编码进行排序,因此会出现只有个位数排序正确的问题
3. 函数
3.1 为什么需要函数
3.2 函数使用
- 函数的声明语法
function 函数名() {
函数体
}
- 函数的调用语法
函数名()
3.3 函数传参
- 声明语法
(形参)
function 函数名(参数列表) {
函数体
}
- 调用语法
(实参)
函数名(传递的参数列表)
参数默认值
如果调用时,不给值,默认是undefined
因此我们可以改进,用户不输入实参,可以给形参默认值,可以默认为0,这样程序更严谨,比如:
这个默认值只会在缺少实参参数传递时才会被执行,所以有参数会优先执行传递过劳的实参,否则默认为undefined
3.4 函数返回值
有返回值的函数:当调用某个函数后,这个函数就会返回一个结果出来
return 数据
返回多个数值: 以数组的形式
函数细节
3.5 作用域
变量的访问原则:
先局部找变量,后整体。一层一层往外找。就近原则。
3.5 匿名函数
匿名函数:没有名字的函数,无法直接使用。
使用方式:函数表达式、立即执行函数
3.5.1 函数表达式
将匿名函数赋值给一个变量,并且通过变量名进行调用
// 声明
let fn = function () {
// 函数体
}
// 调用
fn()
函数表达式和具名函数的不同:
具名函数的调用可以写到任何位置,函数表达式只能先声明 再调用,因为相当于是let定义的变量
3.5.2 立即执行函数
场景介绍: 避免全局变量之间的污染
// 方式1
// 可以理解为:用括号把函数括起来当函数名
// 第一个小括号里是函数名 第二个小括号实际上是在调用
(function () { console.log(1) })();
// 方式2
(function () { console.log(1) }());
注意:多个立即执行函数要用分号隔开,不然会报错
逻辑中断
类似于参数的默认值写法,为了防止函数忘记传入实参时,执行后出现NaN的情况
转换为Boolean型