1. 程式人生 > 其它 >JS 變數提升, 函式提升

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