请选择 进入手机版 | 继续访问电脑版

JS高级程序设计

1
回复
134
查看
[复制链接]
  • TA的每日心情
    开心
    2020-4-15 18:32
  • 签到天数: 1 天

    [LV.1]初来乍到

    1

    主题

    57

    帖子

    57

    积分

    注册会员

    Rank: 2

    积分
    57
    发表于 2020-4-15 18:46:03 | 显示全部楼层 |阅读模式
    摘要
    • js基本的数据类型和关键点
    • 变量,作用域和内存问题
    • 垃圾回收机制
    • 面向对象的程序设计
    • 实现类与继承的经典方式
    • BOM和DOM对象
    • DOM扩展与高级API介绍
    • 高级编程技巧
    • 跨文档消息传递和ajax封装
    • web worker基本实现与demo
    一. Number类型关键点讲解1.进制问题
    • 八进制字面量在严格模式下无效,会导致支持该模式的js引擎抛出异常
    • 十六进制字面量的前两位必须是0x,后根任何十六进制数字(0-9及A-F)
    • 在进行算术计算时,所有以八进制和十六进制表示的数值最终将被转换成十进制数值
    2.浮点数注意点
    浮点数值的最高精度是17位小数,但在进行算术计算时精度远远不如整数。例如 0.1 + 0.2 === 0.300000000000004(大致这个意思,具体多少个零请实际计算) 所以永远不要测试某个特定的浮点数值
    3.数值
    • 使用isFinite(num)来确定一个数字是否有穷
    • ECMAScript能够表示的最小值保存在变量 Number.MIN_VALUE 中,最大值保存在 Number.MAX_VALUE 中。
    • NaN表示非数值。在ECMAScript中,任何数值除以非数值会返回NaN,因此不会影响其他代码的执行。
    • isNaN()用来确定传入的参数是否为"非数值"。会对参数进行转化,不能被转化为数值的则返回true。
    4.数值转换
    parseFloat主要用于解析有效的浮点数字,始终会忽略前导的零,可识别所有的浮点数格式,但是十六进制格式的字符串始终会被转换成零。
    二. 字符串1. toString() 转换为字符串let num = 10;num.toString(n) n表示进制可选如281016
    三.循环1. break和continue
    • break语句会立即退出循环,强制执行循环后面的语句
    • continue语句是退出当前循环,继续执行下一循环
    // 结合label,更精确的控制循环outerMost:for(var i=0;i<10;i++){    for(var j=0;i<10;j++){        if(i = 5){            break outerMost        }    }}//此时直接退出外部循环,continue也是类似
    2. switch语句在比较值时使用的是全等操作符,所以不会发生类型转换3. 函数参数arguments和命名参数function add(n1, n2){    arguments[1] = 10;}
    此时读取n2和arguments[1]并不会访问相同的内存空间,他们的内存空间是独立的,但他们的值保持同步
    四.变量,作用域和内存问题1.传递参数
    1.所有的参数都是按值传递的。在向参数传递引用类型的值时,会把这个值在内存中的地址复制给一个局部变量,因此这个局部变量的变化会反应在函数外部
    2.当在函数内部重写obj时,这个变量引用的就是一个局部对象。而这个局部对象会在函数执行完毕后立即被销毁。
    2.垃圾收集
    • js最常用的垃圾收集机制为“标记清除”,另一种不常用的是“引用计数”。
    • 原理:找出不再继续使用的变量,然后释放其内存空间。垃圾收集器会在固定的时间间隔周期性的执行这一操作。
    3.管理内存
    解除引用:数据不再有用,将其值设置为null
    五.引用类型1.数组总结// 检测数值ES5方法Array.isArray(value)  // 检测值是否为数组// 转换方法toString() 将数组转化为以逗号分隔的字符串valueOf() 返回的还是数组// 栈方法push() 可以接收任意数量的参数把他们逐个添加到数组的末尾返回修改后数组的长度pop() 从数组末尾移除最后一项返回移除的项// 队列方法shift() 移除数组的第一项并返回该项unshift() 向数组前端添加任意个项并返回新数组的长度// 排序sort(compare)compare函数接收两个参数,如果返回负数则第一个参数位于第二个参数前面如果返回零则两个参数相等如果返回正数第一个参数位于第二个参数后面// 降序,升序相反(a,b) => (b-a)// 操作方法concat(数组 | 一个或多个元素) // 合并数组,返回新数组slice(起始位置 [结束位置]) // 切分数组,返回新数组,新数组不包含结束位置的项splice(起始位置删除的个数[插入的元素]) // 删除|插入|替换数组,返回删除的元素组成的数组,会修改原数组// 位置方法indexOf(查找的项[查找起点位置]) // 使用全等操作符,严格相等lastIndexOf()// 迭代方法,都接收两个参数,一个是要在每一项上运行的函数,一个是作用域(可选)1.every 对数组中每一项运行给定函数如果函数对每一项都返回true,则返回true        every(fn(value,index,array){return ...},[this])2.some 对数组中每一项运行给定函数如果函数对任一项都返回true,则返回true3.filter 对数组中每一项运行给定函数返回该函数会返回true的项组成的数组4.forEach 对数组每一项运行给定函数无返回值5.map 对数组每一项运行给定函数返回每次函数调用返回结果组成的数组// 归并方法 reduce和reduceRight(和前者遍历的方向相反),构建一个最终返回的值reduce(fn(prev,cur,index,array){ return ... },initValue)1.fn返回的值会作为第一个参数传递给下一项2.initValue做为归并基础的初始值



    回复

    使用道具 举报

  • TA的每日心情
    开心
    2020-4-15 18:32
  • 签到天数: 1 天

    [LV.1]初来乍到

    1

    主题

    57

    帖子

    57

    积分

    注册会员

    Rank: 2

    积分
    57
     楼主| 发表于 2020-4-15 18:46:23 | 显示全部楼层
    回的人少,我来小顶一下
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    学习课程!一站搞定!
    学途无忧VIP会员群

    973849140

    周一至周日9:00-23:00

    反馈建议

    169371168@qq.com 在线QQ咨询

    扫描二维码关注我们

    学途无忧!为学习谋坦途,为会员谋福利!|网站地图