/********** 第三天 01循环-for **********/
循环基本使用:
for (变量起始值; 终止条件; 变量变化量) {
循环体
}
contiue:退出本次循环;break:退出整个for循环
for循环嵌套 i,j,k
/********** 第三天 02数组 **********/
数组:(Array)是一种可以按顺序保存数据的数据类型
let arr = [] 中括号是数组字面量
数组下标从0开始的原因:
数组在内存中是连续存储的。如果数组的第一个元素的地址是A,那么第n个元素的地址可以通过 公式 A + n * size 计算得到,其中size是每个元素占用的字节数。如果数组下标从0开始,那么这 个公式就变成了 A + i * size,其中i是从0开始的索引值。这使得计算任意元素的地址变得非常直 接和高效。
定义数组:let arr = [1,2,3,4,5]
操作数组:
查:数组名[下标] arr[0]。数组下标越界时,返回值为undefined
改:数组名[下标] = 新的值 arr[0] = arr[1] + 2 // 结果为4
增:.push(元素1, 元素2, 元素n),将一个或多个元素添加到数组的末尾,并返回数组的长度
.unshift(元素1, 元素2, 元素n),将一个或多个元素添加到数组的开头,并返回数组的长度
删:.pop(),删除数组的最后一个元素,并返回元素值
.shift(),删除数组的第一个元素,并返回元素值
.splice(start,deletecount),删除指定元素
例:arr.splice(3,2) 删除arr数组第4个元素和第5个元素
/********** 第四天01 函数 **********/
/***** 为什么需要函数 *****/
为什么:
对已有代码进行抽取-封装,可以实现代码复用,提高开发效率。
是什么:
function执行特点任务的代码块
/***** 函数使用 *****/
声明语法:
function 函数名 (){
函数体
}
函数名命名规范:
前缀应为动词getSum
调用语法:
函数名()
注意:
先声明后调用
/***** 函数传参 *****/
声明语法:
function 函数名 (形参1,形参2....){
函数体
}
调用语法:
函数名(实参1,实参2....)
注意:
形参在为赋值的情况下为undefined
所以为避免实参少传情况,函数有正确的返回值,所以要对形参做初始赋值操作
如:num = 0;arr = [ ]
实参多传,没有影响
/***** 函数返回值 *****/
在函数体中加入return,调用者可以拿到返回结果
注意:
return关键字出现,会立即结束当前函数
没有return,函数默认返回undefined
使用数组返回多个值,
/***** 作用域 *****/
作用域:
变量和常量在整个程序中可使用的代码范围
根据作用域不同,变量分为全局变量和局部变量,常量同理
全局变量:
声明在外部.js文件和在<script></script>标签内部的为全局变量,在整个程序运行中都可以使用
局部变量:
声明在某代码块中的变量,只在对应的代码块可以使用
变量访问原则:
就近原则,作用域范围越小,优先级越高
想要更深入的理解:
B站韩顺平Java课上的内存讲解,作用域和内存回收有关。
/***** 匿名函数 *****/
函数分类:
具名函数,匿名函数
匿名函数:
这个函数没有名字,无法直接使用。使用方式:函数表达式 和 立即执行函数
1. 函数表达式
声明语法: let fn = function() { 调用:fn()
// 函数体
}
使用场景:后期学习webAPI时使用
2.立即执行函数
引入这个语法的作用:
放置变量污染,无须调用,立即执行。
语法:
(function () { })(); 或 (function () { }());
两个小括号,后一个小括号本质是调用函数。所以后一个小括号传实参,前一个属于函数的小括号用形参接收。
函数前后都必须加分号 ;
示例:
(function (x, y) {
console.log(`${x + y}`)
})(1, 2);
(function (a, b) {
console.log(`${a * b}`)
}(3, 5));
&spm=1001.2101.3001.5002&articleId=143258948&d=1&t=3&u=ac10757dd621455c8e810d69e1717f99)

被折叠的 条评论
为什么被折叠?



