欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

[JS]探究Global环境与function内的hoisting现象

程序员文章站 2022-04-23 19:30:24
探究Global环境与function内的hoisting现象 概念: Hoisting是JavaScript的特性,会先把function以及变数给存入记忆体当中 今天在g...

探究Global环境与function内的hoisting现象

概念:

Hoisting是JavaScript的特性,会先把function以及变数给存入记忆体当中

今天在global的环境(Global execution context)下,如果以function来看,可以把宣告放在function invoke下面,因为有hoisting,可以呼叫成功

b();//hoisting function

function b(){
  console.log("call b");
}

如果以变数来看的话,因为有hoisting所以会印出undefined而不是not define

console.log(myVar);//變數的hoisting,會印出undefined
var myVar = "hihihi";

延伸:

如之前所提到的,function呼叫都会产生一个execution context,所以我们这边可以推测也会产生hoisting

以function来看:

function a(){
  inner();//inner在function a裏頭也會hoisting
  function inner(){
    console.log("inner hihihi");
  }
}

会印出inner hihihi,所以也是会有hoisting的。

若以变数来看呢?

function a(){
  console.log(newVar); //newVar在function a裏頭也會hoisting,不會取得外部的newVar
  var newVar;
}

var newVar = "Hello I'm global"
a();

结果在a()中console.log会印出undefined。故不会取得外部的newVar,所以function里头也做了hoisting…