js知识点集合

180 阅读5分钟

js core 和 es6

依据使用的频度,划分

参考文章

  1. JavaScript 标准参考教程

重点阅读部分

  1. ECMAScript 6

重点阅读部分

语法

值类型和引用类型

在es5中,js共number,string,boolean,undefined,null,object5种类型,其中除了object为引用类型外,均为值类型。当前知识重点要求能够区分值类型和引用类型的概念

基本语法

  1. var,let,const的区别
const 定义的object类型,内部的值可以更改
  1. 单行和多行注释
  2. 条件语句
//if else if
if(条件){
    语句
}
else if(条件){
    语句
}
else{
    语句
}

//switch
switch(条件){
    case 值 :
        语句
        //不适用break会导致判断每一个条件是否成立
        break;
    default :
        均不满足条件的情况下执行
}

//三元
条件?为真执行:为假执行
==
if(){}else{}
  1. 循环语句
//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类型参数

//回掉函数

运算符

  1. +,-,*,/,%
  2. i++,i--
  3. +=,-=
  4. <,>,<=,>=,==,===,!=,!==
  5. &&,||

标准库

Object

  1. Object.keys()
  2. in
  3. Object.key
  4. Object[key]
  5. delete
  6. with(严格模式下无效)
with (obj) {
  p1 = 4;
  p2 = 5;
}

==

obj.p1 = 4;
obj.p2 = 5;

Array

  1. 数组的创建
  2. length
  3. Array.isArray()
  4. push,pop(新增删除最后一个)
  5. unshift,shift(新增删除第一个)
  6. join
  7. concat
  8. reverse颠倒排序
  9. slice截取一个副本
  10. splice删除或者在指定位置添加
  11. sort,排序,变更原数组
  12. map
  13. forEach
  14. filter
  15. some含有
  16. every全是
  17. 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

  1. indexOf,lastIndexOf

第一次出现的位置,如果没有出现则返回-1

Number

  1. Number()
  2. toFixed() 指定位数的小数
  3. toPrecision() 指定位数的有效数字

String

  1. length
  2. [index],charAt()
  3. concat,+
  4. slice 从开始索引到结束索引
  5. substring,substr 从开始索引,到指定长度
  6. indexOf,lastIndexOf
  7. trim 去除字符串两端的空格,返回一个新字符串,不改变原字符串,方法去除的不仅是空格,还包括制表符(\t、\v)、换行符(\n)和回车符(\r)
  8. toLowerCase,toUpperCase
  9. match 原字符串是否匹配某个子字符串,返回一个数组,成员为匹配的第一个字符串。如果没有找到匹配,则返回null
  10. search search方法的用法基本等同于match,但是返回值为匹配的第一个位置
  11. replace replace方法用于替换匹配的子字符串,一般情况下只替换第一个匹配(除非使用带有g修饰符的正则表达式)
  12. split split方法按照给定规则分割字符串,返回一个由分割出来的子字符串组成的数组

Math

  1. abs 绝对值
  2. max,min 极值
  3. floor,ceil 向下取整,向上取整
  4. round 四舍五入
  5. random 0-1取随机值

Date

  1. new Date(value=null)
  2. getTime
  3. getDate
  4. getDay
  5. getYear
  6. getFullYear
  7. getMonth
  8. getHours
  9. getMilliseconds
  10. getMinutes
  11. getSeconds

RegExp

  1. 修饰符 i,g,m(//igm)大小写,全局,多行
  2. test 返回一个布尔值,表示当前模式是否能匹配参数字符串
  3. exec 如果发现匹配,就返回一个数组,成员是匹配成功的子字符串,否则返回null
  4. 使用“RegexBuilder”解决简单的正则表达式

JSON

  1. json语法
  2. stringify(3个参数)
    1. 需要转化的内容
    2. 方法还可以接受一个数组,作为第二个参数,指定需要转成字符串的属性。或者一个callback(key,value) return value
    3. 还可以接受第三个参数,用于增加返回的 JSON 字符串的可读性。如果是数字,表示每个属性前面添加的空格(最多不超过10个);如果是字符串(不超过10个字符),则该字符串会添加在每行前面
  3. parse
    1. 转化的内容
    2. 处理的参数同stringify

全局对象

  1. parseFloat
  2. parseInt
  3. decodeURIComponent 和 encodeURIComponent

console

  1. console.log(),console.info(),console.debug()
  2. console.warn(),console.error()
  3. console.table()
  4. console.count()
  5. console.dir(),console.dirxml()
  6. console.assert()
  7. console.time(),console.timeEnd()

补充

定时器

  1. setTimeout()
  2. setInterval()
  3. clearTimeout(),clearInterval()

context

ES6

let 和 const

let 在块级作用域中生效(es5只有全局和函数两种级别的作用域)

解构赋值

  1. 默认值
  2. 数组的
  3. 对象的
  4. 字符串的
  5. 多值获取
  6. 函数传参

String类型的扩展

  1. for of 遍历字符串,无索引
  2. includes 返回布尔值,表示是否找到了参数字符串
  3. startsWith 返回布尔值,表示参数字符串是否在原字符串的头部
  4. endsWith 返回布尔值,表示参数字符串是否在原字符串的尾部
  5. repeat 重复字符串
'x'.repeat(3) // "xxx"
  1. padStart()用于头部补全,padEnd()用于尾部补全
  2. 字符串模板

Array扩展

  1. ... 展开数组(复制数组,合并数组)
  2. find() 和 findIndex()
  3. fill方法使用给定值,填充一个数组
  4. 数组实例的 entries(),keys() 和 values()(和 for of 结合)
  5. includes

数值的扩展

  1. ES6 将全局方法parseInt()和parseFloat(),移植到Number对象上面,行为完全保持不变。
  2. Number.isInteger()用来判断一个数值是否为整数
  3. Math.trunc方法用于去除一个数的小数部分,返回整数部分
  4. Math.sign方法用来判断一个数到底是正数、负数、还是零

函数的扩展

  1. 被定义的name
  2. 箭头函数
  3. 双冒号运算符

对象的扩展

  1. 对象简写
  2. 使用[]定义属性名
  3. Object.is() 同 ===
  4. Object.assign()

set(无重复的数组)

  1. add
  2. delete
  3. has
  4. clear
  5. size

map (多类型键)

  1. size
  2. set
  3. get
  4. has
  5. delete
  6. clear

  1. class
  2. constructor
  3. get,set
  4. static
  5. extends
  6. super

Promise

  1. 定义
  2. 链式调用