美文网首页
2021-01-14

2021-01-14

作者: rub1cky | 来源:发表于2021-01-14 08:23 被阅读0次

    数据类型

    number string null undefined boolean symbol bigint
    symbol 独一无二数据类型,解决全局变量冲突
    bigint 表示任意精度的整数

    内存图、栈、堆

    栈: 基本数据类型
    堆: 复杂数据类型Object

    引用数据类型:先在堆中储存实体对应的指针,实体储存在栈内存中,
    栈:由编译器自动分配和释放,用来储存函数的参数和局部变量
    堆: 由程序员手动释放,或者自动垃圾回收机制‘

    undefined和undecleared

    undefined 已申明未赋值
    undecleared 未申明就引用的报错

    null和undefined

    null 空对象,用来赋值 typeof null == 'object'
    undefined 未定义

    || 和 && 操作符的返回值

    || 来说,如果条件判断结果为 true 就返回第一个操作数的值,如果为 false 就返回第二个操作数的值。
    && 则相反,如果条件判断结果为 true 就返回第二个操作数的值,如果为 false 就返回第一个操作数的值。

    Javascript 的作用域链

    保证执行环境有权访问的所有变量和函数的有序访问,通过作用域链,可以访问到外层环境变量和函数
    当在执行上下文中没有找到变量时,会顺着作用域链向上寻找,直到到全局对象
    作用域链的创建过程跟执行上下文的建立有关

    this的理解

    1. 函数调用模式, this指向全局变量
    2. 方法调用模式, this指向当前的对象
    3. 构造器调用模式, this指向对象实例
    4. apply, call,bind 显示的改变this的指向,

    闭包

    闭包是有权访问另一个函数作用域中的变量的函数, 使已经运行结束的函数变量引用继续留在内存中,闭包函数保留了这个函数的引用

    hasOwnProperty

    不会查找原型链上的属性

    js 延迟加载

    defer 属性
    async 属性
    动态创建 DOM 方式
    使用 setTimeout 延迟方法
    让 JS 最后加载

    同步和异步

    同步,可以理解为在执行完一个函数或方法之后,一直等待系统返回值或消息,这时程序是处于阻塞的,只有接收到返回的值或消息后才往下执行其他的命令。

    异步,执行完函数或方法后,不必阻塞性地等待返回值或消息,只需要向系统委托一个异步过程,那么当系统接收到返回值或消息时,系统会自动触发委托的异步过程,从而完成一个完整的流程。

    事件循环

    事件队列是一个存储着待执行任务的队列,其中的任务严格按照时间先后顺序执行,排在队头的任务将会率先执行,而排在队尾的任务会最后执行。事件队列每次仅执行一个任务,在该任务执行完毕之后,再执行下一个任务。执行栈则是一个类似于函数调用栈的运行容器,当执行栈为空时,JS 引擎便检查事件队列,如果不为空的话,事件队列便将第一个任务压入执行栈中运行。

    loader 和 plugin 的区别

    loader 加载器, 处理非javascript模块
    plugin 插件, Webpack 运行的生命周期中会广播出许多事件,Plugin 可以监听这些事件,在合适的时机通过 Webpack 提供的 API 改变输出结果

    __proto__prototype

    每一个对象都有一个原型对象,并从原型对象上继承属性和方法
    prototype 只有函数才有prototype属性,js函数是一等公民,通过函数模拟类(Class)
    构造函数实例继承函数prototype属性 通过设置自己的__proto__指向函数的prototype实现继承
    通过__proto__prototype合作实现了原型链和继承
    对象字面量的原型就是Object.prototype

    相关文章

      网友评论

          本文标题:2021-01-14

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