美文网首页JavaScript小结
JavaScript中有趣的现象

JavaScript中有趣的现象

作者: 别过经年 | 来源:发表于2020-04-02 16:22 被阅读0次

1. 关于循环中的闭包问题

缘起:
MDN中的闭包章节

function showHelp(help) {
  document.getElementById('help').innerHTML = help;
}

function setupHelp() {
  var helpText = [
      {'id': 'email', 'help': 'Your e-mail address'},
      {'id': 'name', 'help': 'Your full name'},
      {'id': 'age', 'help': 'Your age (you must be over 16)'}
    ];

  for (var i = 0; i < helpText.length; i++) {
    let item = helpText[i];
    document.getElementById(item.id).onfocus = function() {
      showHelp(item.help);
    }
  }
}

setupHelp();

自己做了变形:

function show() {
  for (let i = 0; i < 5; i++) {
    var j = i;
    setTimeout(() => console.log(j), 0); //4 4 4 4 4
  }
}

show();

function next() {
  for (var i = 0; i < 5; i++) {
    let j = i;
    setTimeout(() => console.log(j), 0); //0 1 2 3 4
  }
}

next();

next 可以正常输出,show无法正常输出
之前的理解是,let i 后,循环体就是个独立的块级作用域,从这个结果反推,es6任然没有块级作用域,let 声明只是针对i,循环体内部的var j 还是属于函数作用域。也就是说let const 将变量绑定在了所在的块,而不是let const 创造了块级作用域。

相关文章

  • JavaScript中有趣的现象

    1. 关于循环中的闭包问题 缘起:MDN中的闭包章节 自己做了变形: next 可以正常输出,show无法正常输出...

  • JavaScript的全局变量是如何工作的

    在这篇博客文章中,我们将研究JavaScript的全局变量是如何工作的。一些有趣的现象是: 脚本的作用域、所谓的全...

  • 有趣的现象

    寒假我和爸妈到三亚去旅游,三亚的冬天很热有29度。 有一天,我在家里的露台看见一群蚂蚁排成长队,...

  • 有趣的现象

    今年寒假,妈妈带我去长滩岛游玩,我在大海里像鱼儿一样游来游去,快活极了。后来,在玩海上香蕉船的时候,海水...

  • 有趣的现象

    大一新生大多四人结伴行 大一新生在图书馆走路都是“蹑手蹑脚”的

  • 有趣的现象

    简书里我发现了一个有趣的现象,我不怎么写东西,只是有感而发。 偶尔去简书,看看有什么消息啥的。总是不经意间发现多了...

  • 有趣的现象

    自然界存在各种有趣的现象,含羞草闭上叶子就是一种。 含羞草天生就与一般植物不同,所以长与不同。含羞草地...

  • 有趣的现象

    因为丢了门禁卡,经常借用同事怪不方便的。于是乎决定向人事部门申领门禁卡,那美女说。需要缴纳100元才可领门禁...

  • 有趣的现象

    在跑步的时候,跑着跑着一些想法,以前看过的书中的某些内容就一连串的连接起来 在看完电影或者电视剧的时候,总是要缓一...

  • 有趣的现象

网友评论

    本文标题:JavaScript中有趣的现象

    本文链接:https://www.haomeiwen.com/subject/urwxphtx.html