函数
function fn(){
//函数体
}
var fn = function(){
//函数体
}
var fn = () =>{
//函数体
//没有this 和 arguments
}
函数的存储过程:开辟一个堆内存,然后把函数体当做字符串存储起来 函数 形参 是定义的时候编写的 函数 实参 是执行的时候传递的 arguments 实参集合,是一个类数组(元素集合也是类数组) return 决定函数的返回值,打断函数的执行 this 函数的执行主体
function fn(a,b,...c){
console.log(a,b,c)
}
fn(1,2,3,4,5,6,7)
变量提升(声)
在代码执行前,JS会把代码中 带var 和 带function 的提前声明
- 带var 只声明,不定义
- 带function 既声明又定义
- 变量提升只提升 = 号左边的
- 变量提升对于条件来说,不管成立与否,都会进行变量提升
- 在条件句或者循环句中function声明,高版本浏览器是只声明不定义的
Window
- let 和 const 不存在变量提升
- let 和 const 声明的变量必须在声明的下方使用
- 在上边使用会有 暂时性死区 的错误
var let const 三者的区别
- var 可以重复声明,let 和 const 不可以
- var 存在变量提升,let 和 const 没有
- var 声明的变量,会在 window 下增加一个对应的属性,let 和 const 不会
- var 不识别块级作用域,let 和 const 可以识别块级作用域
function fn(){
console.log(a);
var a =12;
console.log(a)
}
f()