Q1: ['1', '2', '3'].map(parseInt) what & why ?
image.pngmap的第一个函数默认有三个参数(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变量来控制。
网友评论