为了账号安全,请及时绑定邮箱和手机立即绑定

直面JavaScript中的30个疑难杂症

公明2020 Web前端工程师
难度中级
时长 5小时 3分
学习人数
综合评分9.60
17人评价 查看评价
9.6 内容实用
9.8 简洁易懂
9.4 逻辑清晰
  • CSSOM树

    查看全部
  • null转成数字是0,undefined转成数字并不是0,而是NaN。

    null == undefined 并不是因为都被转成了0,而是因为它们两个都代表“没有”,所以ECMAScript文档里面特殊规定了它们是宽松相等的

    查看全部
    1. instanceof返回布尔值:true/false;

    2. a instanceof b? // a对象是否是b实例化后的,instanceof是根据原型链进行检测的;

    3. 与typeof的区别:

      1》输出结果不同,typeof输出数据类型(少了null,多了function,object判定方式根据是否有【call】,有call检测为function,无为object),instanceof输出布尔值

      2》typeof监测引用类型为object,不准确

    查看全部
  • 数据类型:

    基础:undefined null number string boolean
    引用:object


    typeof(null) 为什么是object 不是null?

    使用typeof检测是通过鉴别机器码后三位判断:000位object,null的机器码为000000

    http://img1.sycdn.imooc.com//62062bcf0001d72c07040436.jpg


    http://img1.sycdn.imooc.com//62062c5900015db809060442.jpg


    new实例化获得的对象开辟堆空间,类型属于object;

    查看全部
  • 深浅拷贝

    遍历赋值

    Object.create()

    JSON.parse() 和JSON.stringify()


    跟着变的是 浅拷贝, 没变是深拷贝。

    查看全部
  • array.sort 是根据unicode码表来排序的,0-9,a-z 汉字。

    解决数字排序方案:传一个比较函数进去function (x, y) { return x-y }

    查看全部
  • http://img1.sycdn.imooc.com//61d4432d0001d2c201240102.jpgcewfcqwc

    查看全部
  • NaN,0,undefined,null // false,用boolean转换

    == 会有隐式转换,转成number的形式
    === 不会进行隐式转换

    IEEE754 标准
    二进制转十进制的时候精度丢失
    0.1  + 0.2  // 0.30000000000000004
    方案1:toFixed()
    方案2:  n = Math.pow(10, x); (0.1 *n + 0.2 * n) /n 即可

    sort 
    function sort(a, b) { return a - b; } // 升序排序,
    a - b < 0 a移到b的前面
    a - b = 0 位置不变
    a - b > 0 a移到b的后面

    new Date().getTime() // 毫秒数
    new Date().getDay() // 本周的第几天, 1-7
    new Date().getDate() // 本月几号
    new Date().getMonth() // 第几月,0-11


    查看全部
  • 继承
    继承的6种方式:
    简单原型链:类式继承
    借用构造函数:缺点=父类的原型方法自然不会被子类继承
    组合继承:类式继承+构造函数继承
    寄生组合继承:跟类式继承一样,父类对象中的值类型的属性被复制,引用类型的属性被共有
    原型式寄生式:通过在一个函数内的过度对象实现继承并返回新对象的方式

    查看全部
  • 匿名函数:节约内存空间,调用前和调用后内存中不创建任何函数对象
    回调函数:将一个函数作为对象交给其他函数使用
    递归函数:循环的调用函数本身
    构造函数:用来新建对象
    变量对象:VO variable object 一般是全局环境下保存变量的对象
    活动对象:AO activation object,函数的执行环境是在调用时创建的,该对象代替VO对象来保存当前函数环境中的变量,参数,函数,所以在函数执行环境中的VO就是AO

    重载:在程序中可以定义相同名字,不同参数的形式的不同函数,函数在调用的函数的时候,自动识别不同参数对应的函数,实现相同函数名不同的函数调用,js没有重载,但是可以通过arguments实现函数重载
    多态:同个东西在不同情况下的表现不同状态,重写和重载
    局部函数,this指向window

    查看全部
  • html事件:在html标签绑定事件
    dom0事件:事件绑定,用js绑定
    dom2事件:事件监听,addeventListenor(事件名,触发函数,是否是冒泡)/attaEvent,绑定多个事件
    原因:js事件不支持事件重载,绑定事件相当于一个变量存储的是函数的地址,如果在绑定一个事件,相当于变量指向另一个函数的地址;事件监听相当于订阅发布者,改变了数据,触发了事件,订阅这个事件的函数被执行

    事件对象:事件触发时候自动创建的,封装了事件发生的元素和属性信息,即event

    查看全部
  • DOM树加载的过程:
    1 url,DNS域名解析,找到IP,向服务器发起请求
    2 在服务器返回数据,浏览器接收文件(html、css、js...),二进制文件
      html:二进制转换为html
      构建DOM树,HTML解析器
           Tocken->Node->DOM

           Tocken词法解析,根是“document”对象
           Node:HTMLDivElement
           DOM:DOM和标签基本是一一对应的关系
       解析过程:
           1 遇到link的外部css,遇到css的代码会进行css的加载,并行
           2 遇到script标签,会先去执行js的内容,直至脚本完成执行,然后继续构建DOM;
             底部引入js的原因,或者在头部引用,需加上async、defer,或者window.onload:
             解析器遇到设置了async的script时,开始下载脚本并继续解析文档,脚本会在它下载完成后尽快执行,但是解析器不会停下来等它下载
             如果script标签设置了该属性,则浏览器会在异步的下载该文件并且不会影响后续DOM的渲染;
            如果有多个设置了defer的script标签存在,则会按照书讯执行所有的script
            defer脚本会在文档渲染完毕后,DOMContentLoaded事件调用前执行;脚本会被延迟到整个页面解析完毕后在运行
    3 构建CSS树:CSS解析器
            每个css文件解析为样式表对象cssstylesheet,每个对象都包含CSSRule;CSSRule包含选择器和声明对象,已经其他与CSS语法对应的对象
            Tocken解析:css语法及语法文法
            Node->CSSOM

    4 构建render树,渲染树=DOM树+css树
    5 布局layout与绘制paint:计算对象之间的大小,距离确定每个节点在屏幕上的确切坐标,映射浏览器屏幕的绘制;使用UI后端层绘制每个节点
      reflow(回流):当元素属性发生变化且影响布局时(宽度、高度、内外边距等),产生回流,相当于刷新页面
      repaint(重绘):当元素属性发生改变且不影响布局时(背景颜色、透明度、字体样式等),产生重绘不一定引起回流,回流必将引起重绘

    查看全部
  • 测试一下笔记

    查看全部
  • typeof:返回object,null,function,undefiend

    instanceof:检测布尔值,Triue OR false

    查看全部
  • <script>

    //作用域scope:一个变量的可用范围;{a:1】}}

    //作用域链scope chain:以当前作用域的scope属性为起点依次引用每个A0,直到window结束,形成多级引用关系

    //js作用域:ES5

    //两大类:全局作用域、函数作用域

    //解释执行,在执行过程中,JavaScript引擎是严格按着作用域机制(scope)来执行的,并且Javascript的变量

    和函数作用域是在定义时决定的,而不是执行时决定的。JavaScript中的变量作用域在函数体内有效,无块作用域

    查看全部

举报

0/150
提交
取消
课程须知
1、有一定的前端JavaScript基础的用户 2、想对JavaScript有更深层次的了解,或者是对常见JavaScript面试题难以理解的用户 3、技术储备:JavaScript、HTML、CSS
老师告诉你能学到什么?
JavaScript中比较重要的知识点,例如数据类型检测;面试中常见的闭包、作用域和作用域链、执行上下文等等;还有JavaScript中的原型、原型链,面向对象问题,以及实战开发的运用。

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!