前端常见问题(三)- js

277 阅读4分钟
  • 数据类型有哪些
    • 值类型(基本类型):字符串(String)、数字(Number)、布尔(Boolean)、对空(Null)、未定义(Undefined)、Symbol。
    • 引用数据类型:对象(Object)、数组(Array)、函数(Function)。
    • 注:Symbol 是 ES6 引入了一种新的原始数据类型,表示独一无二的值。

引用数据类型:对象(Object)、数组(Array)、函数(Function)。

注:Symbol 是 ES6 引入了一种新的原始数据类型,表示独一无二的值。

  • 什么是闭包,为什么要用闭包

    • 闭包就是能够读取其他函数内部变量的函数
    • 由于在js中只有函数内部的子函数才能读取局部变量,因此可以把闭包简单理解成“定义在一个函数内部的函数” 所以,在本质上,闭包就是将函数内部和函数外部连接起来的一座桥梁
    • 好处1: 读取函数内部的变量
    • 好处2: 让这些变量的值始终保持子内存中,重用变量又不造成全局污染
  • this

    • 为什么要用this:
      • this提供了一种更优雅的方式来隐式“传递”一个对象引用,因此可以将API设计得更加简洁且易于复用。随着代码使用模式越来越复杂,显式传递上下文会让代码变得越来越混乱,使用this则不会这样,因为使用this的话函数就可以自动引用合适的上下文对象!
    • this到底是什么:
      • 当一个函数被调用时,会创建一个活动记录(有时候也称执行上下文)。这个记录会包含函数在哪里被调用(调用栈)、函数的调用方式、传入的参数等信息。this就是这个记录的一个属性,会在函数执行的过程中用到。
    • this有哪些绑定规则:
      • 1 默认绑定
      • 2 隐式绑定
      • 3 显式绑定
      • 4 new绑定
    • 优先级: 4 > 3 > 2 > 1
    • 绑定例外:
      • 被忽略的this(null、undefined)
      • 间接引用(赋值)
      • 箭头函数:不使用1-4的绑定规则,根据此法作用域决定this,即箭头函数会继承外层函数的this绑定(无论this绑定到的是什么)
  • 原型 | import | require

  • new一个对象的时候具体发生了什么

  • 同步异步

  • js对数组的增删改查 | localStorage | cookie

  • get 与post 的区别

  • 原生js怎样阻止冒泡事件

  • ES5 ES6去重

  • var a = 3;a = 3的区别

  •     var a = Object();
        a.value = 1;
        b=a;
        b.value=2;
        console.log(a.value); // 2
    
  • 原生js怎样阻止冒泡事件

    属性或事件名 说明 兼容性
    cancelable属性 cancelable 事件返回一个布尔值。如果用 preventDefault() 方法可以取消与事件关联的默认动作,则为 true,否则为 fasle IE不支持
    returnValue属性 如果设置了该属性,它的值比事件句柄的返回值优先级高。把这个属性设置为 fasle,可以取消发生事件的源元素的默认动作。 只支持IE
    bubbles属性 bubbles 事件属性返回一个布尔值,如果事件是起泡类型,则返回 true,否则返回 fasle。 IE不支持
    stopPropagation方法 不再派发事件。终止事件在传播过程中的捕获、目标处理或起泡阶段的进一步传播。调用该方法后,该节点上处理该事件的处理程序将被调用,事件不再被分派到其他节点。 -
    preventDefault方法 取消事件的默认动作。注意,如果 Event 对象的 cancelable 属性是 fasle,那么就没有默认动作,或者不能阻止默认动作。无论哪种情况,调用该方法都没有作用。 -
  • post get请求的区别

    项目 get post
    后退按钮/刷新 无害 数据会被重新提交(浏览器应该告知用户数据会被重新提交)
    缓存 能被缓存 不能缓存
    历史 参数会保留在浏览器历史记录中 参数不会保留在浏览器历史记录中
    对数据长度的限制 有限制。当发送数据时,GET 方法向 URL 添加数据;URL 的长度是受限制的(URL 的最大长度是 2048 个字符)。 无限制
    对数据类型的限制 只允许ASCII字符 没有限制,也允许二进制数据
    安全性 安全性很低,发送的数据是url的一部分 安全性较高,因为参数不会被保存在浏览器历史或 web 服务器日志中
    数据可见性 数据在url中对所有人可见 数据不会显示在url中
  • js对数组的增删改操作

    • 创建:var arr = new Array()
    • 增加:
        arr[0] = '0';
        arr[1] = '1';
      
    • 修改:
        arr[0] = 'test';
      
    • 删除:
        arrayObject.splice(index,howmany,item1,.....,itemX)
      
    • 常用数组操作