一、复习javaScript
-
javaScript:是一种单线程的可以运行在浏览器或服务端的弱类型脚本语言
- 单线程:
- 进程:完成一项任务所经历的过程
- 线程:线程进进程范围要小,一个进程可以包括多个线程
- 弱类型:变量的类型由赋值的类型决定
- 脚本语言:不会提前编译,是在运行时边解释边执行的语言
- 单线程:
-
javaScript发展史
-
javaScript是1995年诞生的
-
javaScript于1997发布javaScript1.0标准版本(TC29委员会-ECMA262)
-
javaScript于1998发布javaScript2.0标准版本
-
javaScript于1999发布javaScript3.0标准版本
-
javaScript于2005针对javaScript4.0的讨论,比较激烈,不欢而散
-
javaScript于2009发布javaScript5.0标准版本
-
javaScript于2011发布EcmaScript5.1标准版本
-
javaScript于2015发布EcmaScript2015(也称ES6)标准版本
-
javaScript于2016发布EcmaScript2016(ES7)标准版本
-
…往后每年6月份都会发布一个新ES版本
-
javaScript包括三部分:ECMAScript(核心),DOM,BOM
- ES6新增特性
1.let和const:
let和var的区别:
(1)看是否有变量提升
var有变量提升,let没有
(2)看是否有块级作用域
(3)看是否能够重复定义
2.解构赋值
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);
4.模块化
ES6的模块化: ES module
导出: export default {}
导入: import {},aa from '暴露的对象'
node里的模块化: commonJS
导出 modules.exports={}
导入 require('导入你的模块')
5.class类
第一点: ES5中是用函数来模拟一个类,ES6中class来实现一个类
类与对象的关系:一个类可以创建出多个对象(对象也称为实例)
6.扩展运算符(...)
有2个作用:
展开操作:
//展开数组
var arr1=[5,3,2,4] //...arr1最终变成 5,3,2,4
var arr2=['hello','vue.js']
var result=[...arr1,...arr2]
//展开对象
var obj1={
name:'alice',
age:20,
address:'北京'
}
var obj2={
xueli:'本科',
hobby:'爬山'
}
var resultOjb={ ...obj1,...obj2 }
rest操作:
//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)
7.箭头函数:
格式:(参数1,参数2,...参数n)=>{ //代码块 }
面试经常问:普通函数和箭头函数区别
1.this指向不同:箭头函数没有自己的this,它的this指父级函数所在的this
2.箭头函数不能实例化:new ()=>{ } 报错
3.箭头函数没有arguments
9.模板字符串:
//js定义字符串的形式有3种:单引号(' '),双引号(" "),反引号(` `)
let str1='hello';
let str2="vue.js"
let str3=`我爱中国的${str2}`