一、今日学习内容
1.执行环境与作用域
1.1执行环境和变量对象和作用域
标识符:变量名/函数名/形参/对象的键名 统称为标识符
作用域:标识符可以被访问的范围,就是作用域
执行环境:代码运行的环境,js有两种执行环境,全局和函数执行环境
js的执行环境,被放入了一个栈中
作用域链:提供了一套标识符访问的规则,保证标识符有序进行访问(执行环境--运行环境)
作用域链提供了一套标识符访问的规则,让标识符可以进行有序的访问,规则就是从里往外找查找标识符,找到就使用,停止整个查找的过程,直到window,找不到就报错
1.2作用域分类
1.全局作用域
2.函数作用域(局部作用域)
3.块级作用域(ES6)
2.函数进阶
2.1函数声明方式
声明式function 函数名(){}
表达式var/let/const fn=function(){}
箭头函数()=>{}
可省略的情况:
1.如果{}中只有一句代码,省略花括号,同时必须省略return
2.形参有且只有一个,可以省略小括号()
如果没有形参不能省略()
2.2函数参数
1.形参:占位用的,叫什么没关系,主要要语义化
2.实参:调用函数时传入的实际的参数
2.3arguments(伪数组)
概念:函数内部获取到所有实参的集合
2.4剩余参数
剩余函数rest是真数组,可直接使用数组方法
2.5参数默认值
ES5:function fn(形参) {
let 变量 = 形参 || 默认值;
}
ES6:
function fn(形参 = 默认值) {
}
2.6函数的返回值
函数返回什么,就得到什么,函数可以返回任何东西
函数没有写return,函数的返回值为默认值undefined
函数在哪里调用,返回值就会返回到那里去
2.7函数调用
声明式/表达式直接调用
对象的属性和方法调用,对象.方法()
回调---定时器,自动执行,自动调用
自己调用自己---自调用函数,立即执行函数表达式IIFE
2.8立即执行函数表达式
; (function () {
var a = 10;
var b = 30;
function add() {
var sum = a + b;
return sum;
}
window.$ss = {
add: add,
a: a,
b: b
}
})();
作用:如果挂载到window上,成为了全局变量,全局的标识符,写了js代码,如果全局的标识符过多,全局污染,比较容易与其他人的代码冲突
3.闭包
1.跨作用域访问变量,形成闭包,闭包是一种作用域的体现
2.常见的闭包写法是:父函数嵌套子函数,子函数可以访问父函数的变量,把子函数返回或者挂载到window上
二、今日问题
今日未遇到问题
|