美文网首页
let相关面试题

let相关面试题

作者: kzc爱吃梨 | 来源:发表于2019-09-26 10:17 被阅读0次

第一题

var i
for( i=0; i<6; i++){
  function fn(){
    console.log(i)
  }
  fn()
}

结果是0,1,2,3,4,5

第二题

for(var i=0; i<6; i++){
  function fn(){
    console.log(i)
  }
  btn.onclick = fn //6
}
// 点击的时候i早已变成6了
console.log(i) //6

第三题 console.log(i)为几,为什么,怎么打印对应的数值

  <ul>
    <li>导航1</li>
    <li>导航2</li>
    <li>导航3</li>
    <li>导航4</li>
    <li>导航5</li>
    <li>导航6</li>
  </ul>

  <script>
    var li = $('ul>li')
    for(var i=0; i<li.length; i++){
      li[i].onclick = function(){
        console.log(i)  //6
      }
    }

    console.log(i) //6
  </script>

由于i早就变成了6,的、所以console.log(i) //6


错误方法

    var li = $('ul>li')

    var i
    for(i=0; i<li.length; i++){
      var j=i
      li[j].onclick = function(){
        console.log(j)
      }
    }
    console.log(i,j) //6 5

相当于
    var i
    var j
    for(i=0; i<li.length; i++){
      j= i
      li[j].onclick = function(){
        console.log(j)
      }
    }

由于j会提前,并没有储存五个i,就随着i边,所以打出来j是5。

正确方法:

    var i
    for(i=0; i<li.length; i++){
      let j=i
      li[j].onclick = function(){
        console.log(j)
      }
    }

由于let的作用域只在{}之间,每次循环都有一个新的j对应一个i(let声明变量只能赋值一次),所以能打出对应的j。

    for(let i=0; i<li.length; i++){
      li[i].onclick = function(){
        console.log(i)
      }
    }
image.png

相关文章

  • let相关面试题

    第一题 第二题 第三题 console.log(i)为几,为什么,怎么打印对应的数值 由于i早就变成了6,的、所...

  • webpack配置相关

    ## webpack相关配置 let path = require('path'); let HtmlWebpac...

  • ES6相关知识点

    var、let 及 const 区别 涉及面试题:什么是提升?什么是暂时性死区?var、let 及 const 区...

  • iOS RunLoop 总结以及相关面试题解答

    iOS RunLoop 总结以及相关面试题解答 iOS RunLoop 总结以及相关面试题解答

  • Day 93/100 (JS)Number类型判断

    写在前面的话 道理知道,但一做就错,今儿面试题又做错了... (一)题目 let a = 3; let...

  • ES6---let var cons相关面试题

    1. 时机(代码的执行顺序) 2.语法问题 作用域 魔法 i的作用域只在()中,{}中是无法访问到i的。for循环...

  • iOS 面试题收集自测

    目录 1.相关经典面试题2.相关优秀文章 1.相关经典面试题 2.相关优秀文章 iOS 面试知识总结之文章收录:h...

  • js中的栈内存和对内存

    常见面试题: Q:说说var、let、const的区别A:balabalabalabla...Q:const定义的...

  • ES6系列一:let、const

    注意: 所有代码都是用ES6在线测试,分享给大家。 经典面试题: 解决方案 let: 很多人都知道可以用let来...

  • iOS

    NSDate相关 let timeInterval = NSDate().timeIntervalSince197...

网友评论

      本文标题:let相关面试题

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