语句
条件语句
1: ifelse
- 应用:在不同条件下输出不同结果时候, 难点【如何根据条件写表达式】
- 代码块中变量 【是全局变量】
- 如果执行满足-一个条件的代码块。其他条件下代码块不会执行
- if() () 必须是【true】才能执行 if 中代码块 【true来源】 1. 直接 true
2:表达式返回值 3:直接使用变量,变量的值【转化】为布尔类型
(2)三元运算符
- ? 左边【条件】
- ? 右边 中间 满足条件的 if 语句
- : 右边else语句
- 右边如果为条件则是else if语句
- 记忆技巧 ? if : else
- 嵌套逻辑分组解决 ()
for 循环
1: for(key in obj){}
- 作用遍历对象
2:for - 应用;遍历数组
- 某个语句需要重复执行多次。
- 循环后退与循环语句相反 若 i++ 退 i-- 若 i-- 退 i++
- 循环语句中变量 【全局变量】
- 初始化语句必须写在循环外部
- 循环体内语句;可以获取到每次循环变化的过程
- 循环体外,可以访问的最后一次执行语句时的结果
- i 的 变化 外部最大值 = 内部最大值+1 外部最小值 = 内部最小值-1
for 情景再现
- 循环体中执行【函数】–> 多次调用函数,函数有返回值,这有多个返回值输出
- 循环嵌套 里面的循环执行的总次数 = 外部循环次数 * 内部循环次数
- 里面的循环特点,外面循环体没执行一次,里面循环执行多次
- 动态表格实现
- 结构复杂的数据处理
- 多维数组
for 计算问题
- 方式第一步 找规律
- 第二步 根据规律写表达式
- 第三步 找特殊(特殊条件下输出的结果)
- 第四步 写表达式
- 第五步 写完成结果的语句
for中break与continu
- break结束循环,即使还有好多次没有循环;也不执行了
- continue 跳出循环体本次执行,但是不结束循环;
###函数
1:函数定义 function
2:函数执行 :函数名()
3:参数 :
- 形参 作用:接收实参,供给方法体使用
- 实参:为任意的js数据类型。
- 实参如果为【定义的函数】,则这个函数是回调函数
- 形参与实参一一对应
- 形参与变脸的区别:形参只赋值一次 ,变量可以重新赋值
- 实参的个数小于等于形参的个数
- arguments 伪数组:接收实参,有他不用其他形参
4:方法体
- var 定义的变量,只有方法体中变量为局部的,其他一律全局的
- 写语句 ,完成该方法的业务逻辑
- 方法体中变量执行完毕后就会被释放,不会在内存中保存
- 变量的局部作用域形成时间:在函数定义时
5:return
- 函数返回值
- 结束语句 return下所有的语句都不会被执行
- 返回值 :只有函数执行时才会【出现】
- 应用: 把函数完成忆江南:结果【告诉外界】---->外界用变量接收
6:函数的调用
- 函数没调用一次,方法体会执行一次,执行完毕后,方法体内的变量就会释放
- 函数可以重复调用
6.5 :回调函数
- 函数作为参数传给另一个函数 就是回调函数
- 是否需要执行? 需要:
- 内置API中回调函数 在封装时候就触发了
- 自定义的,要自己写
- 变量为局部
- 回调地狱 - --》解决方法 promise 对象 ---》过多 .then --->asnyc await
- 难点:在回调地域中,不能知道执行函数
- 解决方式:1:打印输出 2:查看执行时传入的值
- 回调函数 异步的 但是代码里面的函数为同步的
7:封装方法的思路
- 【定作用】确定封装方法的作用是什么
- 【定形参】确定实现作用需要哪些【变量】材料------>形参
- 【传实参】找到一个特殊的实参,在这个实参情况下,如果完成业务
- 【定值】变【变值】,把固定的值变为可变的值
- 【找特殊】 在特殊的情况下的结果 -----写条件句写表达式
- 【返回结果】
8:作用域
- 作用域分为 全局作用域 ,局部作用域,块级作用域【es6】
- 作用域大的不可以访问作用域小的变量
- 【只有】function 函数内部的变量为【局部的】 for 与 if 是全局 的
- 全局的变量永远不可能是私有的,不论是用var let const 声明的
- 块级作用域,【不限于函数】任何一个代码块都可以有【私有变量】【let】
9:作用域链【scope】
- 作用域 一层作用域包裹另一层作用域,从而形成作用域链,通过scope
- 作用域链导致了变量的使用规则。
- 1:在自己的作用域中找,如果没有就去父域中找,知道找到全局域为止
- 变量查找方式
- 1:先看声明,再看赋值,赋值使用的就近原则
- 注意:xxx=nnnn不是全局的
10 变量提升
- 在当前作用域中声明的变量,会将变量提升到作用域顶部
- 声明提升 值不提升【undefined】
- 在当前域使用变量是,看当前使用变量是否赋值
11: this指向
- 全局下的this 指向window
- 函数中的this 谁调用指向谁
- 事件处理函数中 this 谁触发指向谁
- 对象中的this 默认指向当前对象
- 箭头函数中无this 但是如果箭头函数中出现this如何解决
- 构造函数中的this指向构造函数的对象
12 :区分this 使用指向问题
第一步 :看this在哪里
- 全局 this 指向 window
- 函数中
第二步:区分在什么函数中?
- 箭头函数中,this 找上层域的this 【自己没有】
- 上层域(全局) === window
- 上层域(函数function)=====>按照下面步骤走
- function函数:
- 事件处理函数:this 指向【触发实现的对象】 ---- >谁绑定指向谁
- 构造函数 this 指向 构造函数创建的对象
- 其他
第三步:看函数后是否有bind() call() apply()
- 有 以上三个参数 参一是什么:this 指向参一对象
- 无 -----》使用谁调用指向谁规则
- 注意 this.xx= xxx是重新赋值,还是添加属性