input的onblur和onchange事件区别是什么?

onblur 在 input 失去焦点时候触发。与之对应的是 onfocus 事件。无论 input 是否有值、值是否有变化,都会触发。
onchange 在 input 发生变化然后在失去焦点的时候触发。且先于 onblur 触发。onchange 只有在 input 的值必须与前一次输入不同才会触发。

<input type="text" id="a" placeholder="onchange" onchange="onfun()"> <input type="text" id="b" placeholder="onblur" onblur="onblu()"> <script> function onfun() {console.log('onchange')} function onblu() { console.log('onblur') } </script> </body>

什么是脱离文档流?有什么办法可以让元素脱离标准的文档流?

文档流就是指元素在 HTML 文档中位置顺序决定排布的过程。HTML 元素有块级元素和行内元素,块级元素一个占一行,行内元素在一行内依次排布。整体元素从上到下的排布顺序如同瀑布一样。

脱离文档流即脱离了排布的规则。可以使用 float absolute/fixed 来脱离文档流。脱离文档流的元素不受文档流内元素的影响。

请使用原生的js实现斐波那契数列

function Fibonacci (n) {
  let arr = [1, 1]
  for (let i = 2; i < n + 1; i++) {
    arr[i] = arr[i - 1] + arr[i - 2]
  return arr
 //return arr[n]
let Fibonacci = num => {
    if (!Fibonacci.sequence) Fibonacci.sequence = [1, 1]
    if (Fibonacci.sequence[num] !== undefined) return Fibonacci.sequence.slice(0, num)
    for (var i = Fibonacci.sequence.length; i < num + 1; i++) {
        Fibonacci.sequence[i] = Fibonacci.sequence[i - 1] + Fibonacci.sequence[i - 2]
    return Fibonacci.sequence.slice(0, num)
const fib = (limit = 10, arr = [1, 1]) => {
  // 使用循环
  // if (limit < 3) {
  //   return arr;
  // const result = arr;
  // while (result.length < limit) {
  //   const len = result.length;
  //   result.push(result[len - 1] + result[len - 2]);
  // return result;
  // 使用递归
  if (arr.length < limit) {
    const len = arr.length;
    return fib(limit, [...arr, arr[len - 1] + arr[len - 2]]);
  } else {
    return arr;
console.log(fib());
console.log(fib(9));