美文网首页
几道前端试题

几道前端试题

作者: 码农田伟 | 来源:发表于2019-03-13 13:35 被阅读0次

看见几道前端试题, 挺有意思, 拿出来分享一下.

for(var i =0; i< 10; i++){
 setTimeout(() => console.log(i),1000)
}
// 问: 代码执行多少次, 分别输出什么

function text(){
 var i = 0
 return function B(){
  console.log(++i)
 }
}
var S = text()
S()
S()
// 问: 分别输出什么

直接看答案, 在浏览器中的运行结果:


image.png

var如果换成let 就会是0-9


image.png
业界前辈点评: 通过var定义的变量,作用域是整个封闭函数,是全域的 。通过let定义的变量,作用域是在块级或是子块中 image.png

js中的函数和变量作用域是一个有意思的话题, 我也不能很清楚的判断, 多数时候还是通过运行看结果. 大家可以参考<<Javascript语言精粹>>这本书. 很多问题来自ES3以及更早的版本. ES5和ES6引进了一些新的语法, 但基本是在不改变原有语义的基础上添加, 所以现在是新坑旧坑并存. 如果再考虑各种浏览器和运行环境的不同实现, 技术人员的处境也确实让人心酸.

相关文章

网友评论

      本文标题:几道前端试题

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