2020-02

作者: hey_前端豆 | 来源:发表于2020-02-24 10:42 被阅读0次

    Q1: ['1', '2', '3'].map(parseInt) what & why ?

    image.png

    map的第一个函数默认有三个参数(val, index, arr)
    parseInt有两个参数(val, radix)
    需要注意的是 :
    1.radix不传或者默认为0会以10进制
    2.2<radix || radix > 36 返回的值就是NaN

    Q2:全局作用域中,用 const 和 let 声明的变量不在 window 上,那到底在哪里?如何去获取?

    image.png

    在块级作用域里,直接输入命名就可以获取。GlobalEnv是一个复合环境,包括一个由global构成的对象环境(objEnv)和一个一般声明的环境(declsEnv)组合而成,它是双环境组成的,统一交付一个环境存取的界面(objEnv/declsEnv 对应 Global/Script)。
    let/const 声明会放在declsEnv里面,而var的变量会通过ObjEnv来声明, 所以显而易见说明,let,const 声明的变量不在window对象

    Q3: input 搜索如何防抖,如何处理中文输入

    <div>
        <input type="text" id="ipt">
      </div>
    
      <script>
        let ipt = document.getElementById('ipt');
        let dbFun = debounce()
        ipt.addEventListener('keyup', function (e) {
          dbFun(e.target.value);
        })
    
        function debounce() {
          let timer;
          return function (value) {
            clearTimeout(timer);
            timer = setTimeout(() => {
              console.log(value)
            }, 500);
          }
        }
      </script>
    

    compositionstart & compositionend & compositionupdate做的中文输入处理: 这3个方法是原生的方法,这里简单介绍下,官方定义如下compositionstart 事件触发于一段文字的输入之前(类似于 keydown 事件,但是该事件仅在若干可见字符的输入之前,而这些可见字符的输入可能需要一连串的键盘操作、语音识别或者点击输入法的备选词) 简单来说就是切换中文输入法时在打拼音时(此时input内还没有填入真正的内容),会首先触发compositionstart,然后每打一个拼音字母,触发compositionupdate,最后将输入好的中文填入input中时触发compositionend。触发compositionstart时,文本框会填入 “虚拟文本”(待确认文本),同时触发input事件;在触发compositionend时,就是填入实际内容后(已确认文本),所以这里如果不想触发input事件的话就得设置一个bool变量来控制。

    相关文章

      网友评论

          本文标题:2020-02

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