当前位置: 移动技术网 > IT编程>开发语言>JavaScript > [JS]探究Global环境与function内的hoisting现象

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

2018年03月27日  | 移动技术网IT编程  | 我要评论

探究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…

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网