JS 变量提升, 函数提升

  console.log(a) 
  var a;
  console.log(a)
  a = 10 
  console.log(a)
  function a() {
    let c = 1;
  }
  console.log(a)


//相当于:
  function a() {
    let c = 1;
  }
  var a;
  console.log(a)
  console.log(a) 
  a = 10 
  console.log(a)
  console.log(a)

1) 变量声明存在提升,函数声明存在提升,但函数声明比变量声明更置顶
2) 声明过的变量不会重复声明, 但赋值会覆盖之前的声明

例题1
	console.log(a)
	//结果:报错 a is not defined

例题2
    console.log(a) 
    var a;
	//结果:undefined

例题3
    console.log(a) 
    let a;
	//结果:报错 a is not defined
    //let 没有变量提升


例题4
	var a=1
	function fn(){
		console.log(a)
		var a=2;
	}
	fn()
	//结果:undefined	
// var a=1
// function fn(){
//    var a
// 	  console.log(a)
// 	  a=2;
// }
// fn()


例题5
	var a=1
	function fn(a){
		console.log(a)
		var a=2;
	}
	fn(5)	
	//结果:5
 // var a=1
 // function fn(a){
 //     var a
 //     a=5
 //     console.log(a)
 //     a=2;
 // }
 // fn(5)

例题6
    var f = function () { console.log(1); }
    function f() {
      console.log(2);
    }
    f()
	//结果:1
//  function f() {
//    console.log(2);
//  }
//  var f = function () { console.log(1); }
//  f()
posted @ 2022-02-23 22:54  波吉国王  阅读(29)  评论(0编辑  收藏  举报