javascript高级程序设计总结一

一、Number类型

1.浮点数注意

0.1+0.2===0.300000000004存在浮点精度缺失的问题。可以通过指定精度来避免。

//*10
(01*10+0.2*10)/10=0.3
//也可以使用tofixed
number.toFixed(1);

2.数值

NAN是非数值,NAN不等于它本身。isNAN()可以用来判断是不是非数值,如果是非数值 返回true,反之,返回false。

二、垃圾回收问题

  1. 标记清除:给变量添加标记,如果使用该变量则去除标记,清除带有标记的变量。
  2. 引用计数:当引用的次数为0时,清除掉。

三、引用类型

1.数组总结

// 检测数值ES5方法
Array.isArray(value)  // 检测值是否为数组
// 转换方法
toString() 将数组转化为以逗号分隔的字符串 arr=[1,2,3]  arr.toString()==>"1,2,3"
valueOf() 返回的还是数组 返回指定对象的原始值
// 栈方法
push() 可以接收任意数量的参数,把他们逐个添加到数组的末尾,返回修改后数组的长度
pop() 从数组末尾移除最后一项,返回移除的项
// 队列方法
shift() 移除数组的第一项并返回该项
unshift() 向数组前端添加任意个项并返回新数组的长度
// 排序
sort(compare)
compare函数接收两个参数   相当于a-b<0==>a在前面,反之a在后面,相当于升序排序
// 降序,升序相反
(a,b) => (b-a)
// 操作方法
concat(数组 | 一个或多个元素) // 合并数组,返回新数组    不会改变原数组
slice(起始位置 ,[结束位置]) // 切分数组,返回新数组,新数组不包含结束位置的项
splice(起始位置,删除的个数,[插入的元素]) // 删除|插入|替换数组,返回删除的元素组成的数组,会修改原数组
// 位置方法
indexOf(查找的项,[查找起点位置]) // 使用全等操作符,严格相等,                 如果等于-1表示不存在,反之返回该查找项的索引
lastIndexOf()  //返回查找项最后一次出现的索引 否则返回-1
// 迭代方法,都接收两个参数,一个是要在每一项上运行的函数,一个是作用域(可选)   
1.every 对数组中每一项运行给定函数,如果函数对每一项都返回true,则返回true
        every(fn(value,index,array){return ...},[this])
2.some 对数组中每一项运行给定函数,如果函数对任一项都返回true,则返回true
3.filter 对数组中每一项运行给定函数,返回该函数会返回true的项组成的数组
4.forEach 对数组每一项运行给定函数,无返回值
5.map 对数组每一项运行给定函数,返回每次函数调用返回结果组成的数组 有返回值
6.find 对数组每一项进行给定函数,找到第一个符合的返回该项,否则返回undifined
// 归并方法 reduce和reduceRight(和前者遍历的方向相反),构建一个最终返回的值
reduce(fn(prev,cur,index,array){ return ... },initValue)
1.fn返回的值会作为第一个参数传递给下一项
2.initValue做为归并基础的初始值

2.date对象

  1. new Date(str|year,mouth,day…)可以接受日期格式的字符串“1995-10-14”,也可以是年、月、日参数的数字
new Date("1995,10,15")
Sun Oct 15 1995 00:00:00 GMT+0800 (中国标准时间) {}
  1. Date.now()返回调用这个方法的日期时间的毫秒数,使用+new Date()也可以。
+new Date('1995,10,15')
813686400000

3.regExp对象

  1. .exec(text) 返回index(表示匹配项在字符串中的位置)、input表示应用正则表达式的字符串
let text="aaac"; let reg=/c/g;let matchs=reg.exec(text); console.log(matchs[0])
VM1462:1 c
  1. test(text):接受一个字符串参数,匹配返回true
let text="aaac"; let reg=/c/g;let matchs=reg.test(text); console.log(matchs)
VM1553:1 true

4.函数

  1. 函数内部属性arguments对象有一个名叫callee的属性,该属性是一个指针,指向拥有这个arguments对象的函数 ,arguments.callee(arg)//调用函数自身,在严格模式下报错,什么意思?来看个demo吧。同时,如果没有父函数为null,有父函数嵌套调用输出父函数,没有嵌套调用,也是输出父函数。callee
function obj(){console.log(arguments.callee)} obj()
VM2131:1 ƒ obj(){console.log(arguments.callee)}//输出的是obj这个函数
  1. 函数的length属性是形参的长度,arguments.length是实参的长度
  2. 函数方法(call()、apply()、bind()这里就不在叙述了)

5.基本包装类型

  1. 什么是基本包装类型?
    大家都知道引用类型,那基本包装类型就是ECMAScript为方便操作基本类型提供的三种特殊的引用类型。

       - Number:与数值型对应的引用类型
       - String:与字符串对象的包装类型。有一个length属性,返回字符串的长度(保括空格)
       - Boolean:返回true和false
    
var obj=new Boolean(false); if(obj){console.log("hahahah")}; // hahahaha  obj返回的是一个对象,这个是对象存在。
var obj=new Boolean(false); if(obj.valueOf()){console.log("hahahah")};//undefined  对象的值valueOf是false
引用类型基本包装类型
使用new操作符创建的应用实例,在执行流离开作用域之前都一直保存在内存中自动创建的基本包装类型对象,只存在于一行代码执行的瞬间,然后立即销毁
NumberString
toString():传递一个表示基数的参数,不传默认为10进制charAt(): 传递一个索引值,返回该位置的字符
toFixed():传递一个保留几位小数,并且自动舍入charCodeAt():传递一个索引值,返回该字符的ASCII码
toExponential():指数表示法,同时传递几位小数的参数concat():字符串连接
toPrecision():显示的位数 返回适合的格式slice(start,end)/substr(start,length)/substring(start,end)/indexof()/lastIndexof()/trim()/toLowerCase()/toLocaleLowerCase()/toUpperCase()/toLocaleUpperCase())

6.内置对象

Global对象(全局定义的属性和函数,都将成为global的属性和函数,window对象实现了global对象的一部分。)
1.URI编码方法
    encodeURI()           // 除了空格之外其他字符都不编码
    encodeURIComponent()  //会对它发现的任何非标准字符进行编码
    decodeURI()           //只能对使用encodeURI的字符进行解码
    decodeURIComponent()  // 原理同上

Math对象
1.Math.max() / Math.min() // 接收任意多数值作为参数
// 求数组中最大值 Math.max.apply(Math, arrValue)
2.Math.ceil() / Math.floor() / Math.round()  //向上/下/四舍五入
3.Math.random()  //返回大于等于0小于1的随机数
4.Math.abs() //返回参数的绝对值
5.Math.pow(num,power) // 返回num的power次幂
6.Math.sqrt(num) // 返回num的平方根
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值