ECMAScript是什么?
首先,javaScript的组成包括:ECMAScript,DOM和BOM
1. ECMAScript:javascript核心语法,不依赖平台
例如:定义变量,if,switch,for,数组Api,字符串API,正则Api.....
2. DOM:(Document Object Model)针对浏览器标签操作 例如:获取id,获取类名,获取标签名
注:操作真实DOM,引起重绘和回流-->才引出虚拟DOM
重绘: 主要指页面颜色的改变,不影响DOM的空间变化 color,background
回流: 指页面元素的尺寸(width,padding,height,margin),位置的变化:left,top,bottom,right等
重绘未必引起回流,但回流一定引起重绘
3.BOM:(Browser Object Model)主要针对浏览器相关API操作
history: history.go(),history.back() pusState,popState,replaceState
navigator:跟浏览器系统信息相关
navigator.userAgent
参考:https://developer.mozilla.org/zh-CN/docs/Web/API/Navigator
location:主要获取浏览器地址栏相关的信息
location.search
location.href
location.hash
参考:https://developer.mozilla.org/zh-CN/docs/Web/API/Location
ES6新增特性有哪些?
1.let和const: (重点)
let 是定义变量
const 是定义常量
let和const的区别:
let 定义变量
const 定义常量,是不能修改的,如果要修改,将常量定义成对象的形式,这样,就可以给对象中的属性进行修改。
let和var的区别:
相同点:都是定义变量
区别:
1.是否有变量提升 var有变量提升,let没有
2.是否能重复定义 var允许重复定义变量,let不允许重复定义
3.是否有块级作用域 { }
全局作用域:在函数外部定义的范围
局部作用域:在函数内部定义的范围
块级作用域:在{ }大括号中定义范围
2. symbol:是ES6新增的基本数据类型
number,string,boolean,null,undefined,symbol(ES6新增)
symbol:定义的值是唯一性
两个symbol类型的值永远不等
例如:
var s1=Symbol()
var s2=Symbol()
s1=== s2
false
3. 扩展运算符( … )
扩展运算符(也称展开操作符)两层作用:
1.将数组转换成数据列表 [a,b,c,d]--->a,b,c,d
例如:
var arr1=[666,777,888]
var arr2=['hello','vuejs']
var result=[...arr1,...arr2]
2.将数据列表转换成数组 a,b,c,d--->[a,b,c,d]
3.展开对象:
var result={...obj1,...obj2}
或
result=Object.assign({},obj1,obj2)
例如:
function sum1(str,...args) {
var result=0;
for(var i=0;i |