函数、变量提升、window 一些知识

278 阅读1分钟

函数

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()