doubleyong
管理员
管理员
  • 最后登录2026-05-10
  • 发帖数1198
  • 最爱沙发
  • 喜欢达人
  • 原创写手
  • 社区居民
  • 忠实会员
阅读:5562回复:0

[js]最近很火的一个js题,快来围观吧

楼主#
更多 发布于:2020-04-15 21:43
var a = 0;
if(true){
    a = 1;
    function a(){}
    a = 21;
    console.log("里面",a);
}
console.log("外部",a);
粗略一看,输出都是 21 啊,你以为加个 if(true),大伙就不知道了?
然后,就没有然后了…………
“光荣”的答错了!
正确答案:内部是 21,外部是 1;
这个玄妙之处确实就在这个块级作用域 if 里面。
假如我们去掉 if 看题。


var a = 0;
// if(true){
 a = 1;
function a(){}
a = 21;
console.log("里面",a);
// }
console.log("外部",a);
这道题估计没人好意思去问了,毫无疑问,输出的 a 都是 21 啊。
然而在 JS 里面都说没有块级作用域,那为啥 if 这个块会影响最终结果呢?
大家可以看看原文:https://juejin.im/post/5e933d4a51882573ca3678ef

注:不同浏览对于变量与函数名相同的处理不一样,上面,仅以google浏览器为例。仅做于对于作用域提升的理解学习,现实中一定不要将变量名与函数名重复
知识需要管理,知识需要分享
游客


返回顶部

公众号

公众号