js core 和 es6
依据使用的频度,划分
参考文章
重点阅读部分
重点阅读部分
语法
值类型和引用类型
在es5中,js共number,string,boolean,undefined,null,object5种类型,其中除了object为引用类型外,均为值类型。当前知识重点要求能够区分值类型和引用类型的概念
基本语法
- var,let,const的区别
const 定义的object类型,内部的值可以更改
- 单行和多行注释
- 条件语句
//if else if
if(条件){
语句
}
else if(条件){
语句
}
else{
语句
}
//switch
switch(条件){
case 值 :
语句
//不适用break会导致判断每一个条件是否成立
break;
default :
均不满足条件的情况下执行
}
//三元
条件?为真执行:为假执行
==
if(){}else{}
- 循环语句
//while
while(条件){
语句
}
//do...while
do{
语句
}while(条件)
//for
//for(定义,约束,递增递减)
for(let i = 0 ; i<100 ; i++){
语句
}
//for(定义 in 遍历内容)
for(let p in Object){
语句
}
//使用break跳出整个循环
//使用continue终止本轮循环
//复杂跳跃使用label配合,但是感觉不常用
类型判断
typeof ,instanceof 的使用
typeof 值
== 数据类型,但是无法判断 object和array的差别,且null得到的是object
通过 typeof value === "undefined" 可以判断内容是否真的被定义了
值 instanceof 构造函数 可以区分array和object
函数
//不同定义方式的区别
let a = function(){}
//提升至头部
function a(){
}
toString可以获得函数的字符串(完整内容)
//闭包和立即执行
//object类型参数
//回掉函数
运算符
- +,-,*,/,%
- i++,i--
- +=,-=
- <,>,<=,>=,==,===,!=,!==
- &&,||
标准库
Object
- Object.keys()
- in
- Object.key
- Object[key]
- delete
- with(严格模式下无效)
with (obj) {
p1 = 4;
p2 = 5;
}
==
obj.p1 = 4;
obj.p2 = 5;
Array
- 数组的创建
- length
- Array.isArray()
- push,pop(新增删除最后一个)
- unshift,shift(新增删除第一个)
- join
- concat
- reverse颠倒排序
- slice截取一个副本
- splice删除或者在指定位置添加
- sort,排序,变更原数组
- map
- forEach
- filter
- some含有
- every全是
- reduce,reduceRight (累计的值处理)
[1, 2, 3, 4, 5].reduce(function (a, b) {
console.log(a, b);
return a + b;
})
// 1 2
// 3 3
// 6 4
// 10 5
//最后结果:15
- indexOf,lastIndexOf
第一次出现的位置,如果没有出现则返回-1
Number
- Number()
- toFixed() 指定位数的小数
- toPrecision() 指定位数的有效数字
String
- length
- [index],charAt()
- concat,+
- slice 从开始索引到结束索引
- substring,substr 从开始索引,到指定长度
- indexOf,lastIndexOf
- trim 去除字符串两端的空格,返回一个新字符串,不改变原字符串,方法去除的不仅是空格,还包括制表符(\t、\v)、换行符(\n)和回车符(\r)
- toLowerCase,toUpperCase
- match 原字符串是否匹配某个子字符串,返回一个数组,成员为匹配的第一个字符串。如果没有找到匹配,则返回null
- search search方法的用法基本等同于match,但是返回值为匹配的第一个位置
- replace replace方法用于替换匹配的子字符串,一般情况下只替换第一个匹配(除非使用带有g修饰符的正则表达式)
- split split方法按照给定规则分割字符串,返回一个由分割出来的子字符串组成的数组
Math
- abs 绝对值
- max,min 极值
- floor,ceil 向下取整,向上取整
- round 四舍五入
- random 0-1取随机值
Date
- new Date(value=null)
- getTime
- getDate
- getDay
- getYear
- getFullYear
- getMonth
- getHours
- getMilliseconds
- getMinutes
- getSeconds
RegExp
- 修饰符 i,g,m(//igm)大小写,全局,多行
- test 返回一个布尔值,表示当前模式是否能匹配参数字符串
- exec 如果发现匹配,就返回一个数组,成员是匹配成功的子字符串,否则返回null
- 使用“RegexBuilder”解决简单的正则表达式
JSON
- json语法
- stringify(3个参数)
- 需要转化的内容
- 方法还可以接受一个数组,作为第二个参数,指定需要转成字符串的属性。或者一个callback(key,value) return value
- 还可以接受第三个参数,用于增加返回的 JSON 字符串的可读性。如果是数字,表示每个属性前面添加的空格(最多不超过10个);如果是字符串(不超过10个字符),则该字符串会添加在每行前面
- parse
- 转化的内容
- 处理的参数同stringify
全局对象
- parseFloat
- parseInt
- decodeURIComponent 和 encodeURIComponent
console
- console.log(),console.info(),console.debug()
- console.warn(),console.error()
- console.table()
- console.count()
- console.dir(),console.dirxml()
- console.assert()
- console.time(),console.timeEnd()
补充
定时器
- setTimeout()
- setInterval()
- clearTimeout(),clearInterval()
context
ES6
let 和 const
let 在块级作用域中生效(es5只有全局和函数两种级别的作用域)
解构赋值
- 默认值
- 数组的
- 对象的
- 字符串的
- 多值获取
- 函数传参
String类型的扩展
- for of 遍历字符串,无索引
- includes 返回布尔值,表示是否找到了参数字符串
- startsWith 返回布尔值,表示参数字符串是否在原字符串的头部
- endsWith 返回布尔值,表示参数字符串是否在原字符串的尾部
- repeat 重复字符串
'x'.repeat(3) // "xxx"
- padStart()用于头部补全,padEnd()用于尾部补全
- 字符串模板
Array扩展
- ... 展开数组(复制数组,合并数组)
- find() 和 findIndex()
- fill方法使用给定值,填充一个数组
- 数组实例的 entries(),keys() 和 values()(和 for of 结合)
- includes
数值的扩展
- ES6 将全局方法parseInt()和parseFloat(),移植到Number对象上面,行为完全保持不变。
- Number.isInteger()用来判断一个数值是否为整数
- Math.trunc方法用于去除一个数的小数部分,返回整数部分
- Math.sign方法用来判断一个数到底是正数、负数、还是零
函数的扩展
- 被定义的name
- 箭头函数
- 双冒号运算符
对象的扩展
- 对象简写
- 使用[]定义属性名
- Object.is() 同 ===
- Object.assign()
set(无重复的数组)
- add
- delete
- has
- clear
- size
map (多类型键)
- size
- set
- get
- has
- delete
- clear
类
- class
- constructor
- get,set
- static
- extends
- super
Promise
- 定义
- 链式调用