[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…
上一篇: 欺骗性网址每年为谷歌创收5亿美元
下一篇: 自动重建索引