复习JavaScript
一 JavaScript
javascript:是一种单线程的可以运行再浏览器或服务端的弱类型脚语言
-
单线程:
1:进程:完成一项任务所经历的过程
2:线程:线程比进程范围要i小,一个进程可以包括多个线程 -
弱类型:变量的类型由赋值的类型决定
-
脚本语言:不会提前编译,实在运行的时候边解释边执行的语言
二 发展史
项目 | 时间 | 版本 |
---|---|---|
JavaScript | 1995 | 诞生 |
JavaScript | 1997 | JavaScript 1.0标准版本(TC29委员会-ECMA262) |
JavaScript | 1998 | JavaScript 2.0标准版本 |
JavaScript | 1999 | JavaScript 3.0标准版本 |
JavaScript | …… | |
JavaScript | 2005 | JavaScript 4.0 争议 |
JavaScript | 2009 | JavaScript 5.0标准版本 |
JavaScript | 20011 | EcmaScript 5.1标准版本 |
JavaScript | 20015 | EcmaScript 2015(也称ES6)标准版本 |
JavaScript | 20016 | EcmaScript 2016(也称ES7)标准版本 |
JavaScript | 1. 1. …往后每年6月份都会发布一个新ES版本 |
三 javaScript和ECMAScript关系
javaScript包括三部分:ECMAScript(核心),DOM,BOM
四 ES6新增特性
let和var的区别:
(1)看是否有变量提升
var有变量提升,let没有
(2)看是否有块级作用域
(3)看是否能够重复定义
- 解构赋值
import {mapAction,mapGetters} from 'vuex'
//数组解构赋值
let arr=['hello','vue.js','React','微信小程序']
let [one,two,three]=arr;
// console.log(one)
// console.log(three)
//对象解构
let obj={
name:'alice',
age:20,
info:{
xueli:'本科',
address:'中国'
}
}
let { name, info:aa }=obj
// console.log(name);
console.log('aa:',aa.address);
- set和map:即数组和对象的升级版本
set:数组的升级版本
add:添加唯一值
delete:删除某一个值
clear:删除所有
forEach:遍历set对象
注:可以用set来实现数组去重,
var arr=[3, 4, 5, 5, 2, 2, 4, 6, 562, 2]
例如:[...new Set(arr)]
map:对象的升级版本
let m1=new Map() 创建map对象
m1.set(key,value)设置key的值
m1.get(key)获取key对应的值
m1.keys()获取key所组成的对象
m1.values()获取value组成的对象
m1.entries()获取key,values组成的对象
m1.forEach()遍历map对象
- 模块化
ES6的模块化:ES module
导出: export default {}
导入: import {},aa from ‘暴露的对象’
node里的模块化:commonJS
导出 modules.exports={}
导入 require(‘导入你的模块’)
5. class类
1 ES5中是用函数来模拟一个类,ES6中class来实现一个类
2 类与对象的关系:一个类可以创建出多个对象(对象也称为实例)
- 扩展运算符(…)
//1 展开操作
//展开数组
var arr1 = [5, 3, 2, 4] //...arr1最终变成 5,3,2,4
console.log(...arr1)
var arr2 = ['hello', 'vue.js']
var result = [...arr1, ...arr2]
console.log(result)
//展开对象
var obj1 = {
name: 'alice',
age: 20,
address: '北京'
}
var obj2 = {
xueli: '本科',
hobby: '爬山'
}
var resultOjb = { ...obj1, ...obj2 }
console.log(resultOjb)
//rest操作
function sum(msg, ...arg) {
console.log('msg:', msg);
console.log('arg:', arg);
for (var i = 0, result = 0; i < arg.length; i++) {
result += arg[i]
}
console.log(result);
}
var arr3 = [1, 6, 7]
sum('恭喜啊', ...arr3)
- 箭头函数:
格式:(参数1,参数2,...参数n)=>{ //代码块 }
面试经常问:普通函数和箭头函数区别
1.this指向不同:箭头函数没有自己的this,它的this指父级函数所在的this
2.箭头函数不能实例化:new ()=>{ } 报错
3.箭头函数没有arguments
- 模板字符串:
//js定义字符串的形式有3种:单引号(’ '),双引号(" "),反引号()
let str1='hello';
let str2="vue.js"
let str3=`我爱中国的${str2}`
9.数组和字符串新增的api方法:
字符串:
str.includes(‘’) 检测字符是否有某个字符串,如果有返回true,否则false
str.startsWith(‘’) 检测字符是否在字符串开始,如果是返回true,否则false
str.endsWith(‘’)检测字符是否在字符串结尾,如果是返回true,否则false
数组:
Array.from:可以将类对象转换成真正的数组
何为类数组:也称伪数组,看着像数组,但不具备数组的api方法,但伪数组有length属性,可以像真实数组那样通过下标来访问
真实数组 = Array.from(伪数组)
Array.of
find
findIndex
flat:数组扁平化 降维