学途无忧

标题: JS高级程序设计 [打印本页]

作者: chy123456    时间: 2020-4-15 18:46
标题: JS高级程序设计
摘要一. Number类型关键点讲解1.进制问题2.浮点数注意点
浮点数值的最高精度是17位小数,但在进行算术计算时精度远远不如整数。例如 0.1 + 0.2 === 0.300000000000004(大致这个意思,具体多少个零请实际计算) 所以永远不要测试某个特定的浮点数值
3.数值4.数值转换
parseFloat主要用于解析有效的浮点数字,始终会忽略前导的零,可识别所有的浮点数格式,但是十六进制格式的字符串始终会被转换成零。
二. 字符串1. toString() 转换为字符串let num = 10;num.toString(n) n表示进制可选如281016
三.循环1. 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.垃圾收集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做为归并基础的初始值




作者: chy123456    时间: 2020-4-15 18:46
回的人少,我来小顶一下




欢迎光临 学途无忧 (https://www.xuetu123.com/) Powered by Discuz! X3.2