目录
1.语法
2.类型、值和变量
3.表达式和运算符
4.语句
5.数组
6.对象
7.函数
8.全局属性和方法
9.词法作用域、作用域链、闭包
10.原型链、继承机制
11.this的理解
12.ES5新特性
13.ES6
内容
1.语法
2.类型、值和变量
3.表达式和运算符
typeof和instanceof
运算符优先级
4.语句
5.数组
6.对象
Object类方法和对象实例方法
Number、Date、 Math对象
7.函数
js构造函数
8.全局属性和方法
JS全局函数,Number方法、Math、Date
9.词法作用域、作用域链、闭包
理解词法作用域、作用域链、闭包。
10.原型链、继承机制
js继承机制,模拟类继承的方式(原型链)
11.this的理解
12.ES5新特性
13.ES6
-
箭头函数用法和普通函数有哪些区别,什么时候用比较好?
首先,形式上不同,表达更简洁;一个用处就是,简化回调函数。
-
let const声明符和var的区别,块级作用域的理解
let声明的变量只在代码块内有效。 var命令会发生变量提升的现象,即变量可以在声明之前使用,值为undefined;而let不会;暂时性死区(temporal dead zone, TDZ)在let声明变量之前,该变量都不可用。 在同一个块内,不允许用let重复声明变量。 const和let基本相同,除了const声明的变量的指针不能改变。 块级作用域 ES5中只有全局作用域和函数作用域;这样可能造成不便,如内层变量可能覆盖外层变量,用来计数的循环变量泄露为全局变量。 ES6中let为js新增了块级作用域。 外层作用域无法读取内层作用域的变量;内层作用域可以定义外层作用域的同名变量;块级作用域的出现可以使立即执行函数表达式不再必要了。
-
模板字符串,什么时候用
单纯的模板字符串还存在着很多的局限性。如: 1.不能自动转义特殊的字符串。(这样很容易引起注入攻击) 2.不能很好的和国际化库配合(即不会格式化特定语言的数字,日期,文字等) 3.没有内建循环语法,(甚至连条件语句都不支持, 只可以使用模板套构的方法) “标签模板” 过滤HTML字符串,防止用户输入恶意内容。
set和map类型对象
-
模块import和export
单个模块输出:export 变量定义/函数定义等 单个模块输入:import {需要的变量名,函数名} from 某个文件 整体导入: module 新的对象名 from 某个文件 (这时,文件中定义的变量和函数都是对象的属性和方法) 以默认方式输出: export default 变量啊方法啊对象啊什么的 然后引入: import 新名字 from 某个文件 (这个新名字就是默认的变量啊方法啊对象啊什么的引用)
class和使用构造函数模拟“类”的区别
promise的理解
-
for...of
只有部署了iterator接口的对象才可以使用for...of循环遍历。 自带遍历器的对象有数组、字符串、类数组对象(argument对象、DOM的NodeList对象等)、set和map结构、Generator对象。 普通对象不可以。 for...of是对键值的遍历,而for...in是对键名的直接遍历。
-
es6新增的字符串方法
includes() startsWidth() endsWidth() 都返布尔值,可传入第二个参数,起始位置,includes和startsWidth从指定位置往后查找,endsWidth往前找 repeat() 参数是重复几次,返回重复后的字符串
-
es6新增的Number、Math方法
Number.isFinite() Number.isNaN() 与ES5的全局方法isFinite()和isNaN()不同的是,不会对非数值转换为数组类型,再判断;对非数值全部返回false Number.parseInt() Number.parseFloat() 与相应全局方法一样,只不过放在了Number下,使模块化 Number.isInteger() Number.isSafeInteger() Number.MAX_SAFE_INTEGER Number.MIN_SAFE_INTEGER Math.trunc() 去除一个数的小数部分,直接去掉,返回整数部分
-
es6数组的扩展
Arry.from() 将类数组对象或者可遍历对象转化成数组,Set结构 Arry.of() 参数是一组数,将它们作为一个数组的元素返回数组。 与构造函数Array()的区别:Array()会因为参数的个数不同而不同,参数是一个时,返回含参数个元素为undefined的数组 find() findIndex() 参数是一个回调函数,返回第一个匹配的元素或其下标。都可以发现NaN,弥补了IndexOf()的不足 fill() 用第一个参数填充数组,用可选的第一第二个参数指定填充的开始位置和结束位置。 entries() keys() values() 返回一个遍历器,使for...of遍历数组的键值对、键名、键值。 数组推导 直接在方括号中使用for...of和if语句等对原有数组操作返回新的数组,与map()和filter()功能类似。 也可以对字符串进行处理。 Array.observe() Array.unobserve()
*es6对象的扩展
方法Object.is(),与严格相等类似,但是区分-0 +0 NaN不同 +0 === -0 //true NaN === NaN //false Object.is(-0, +0) //false Object.is(NaN, NaN) //true Object.assign() 参数是一个目标对象,一个或多个源对象 _proto_读取或者设置对象的prototype对象,以前用Object.create()。 Object.setPrototypeOf() Object.getPrototypeOf() 增强的对象写法:直接写入变量和函数 比如: var x = 1; var a = {x, hello(){console.log(x)}}; 属性名表达式: 用表达式作为对象的属性名。 比如: var zhanglu = "zhoushen"; var b = {[zhanglu], [zhanglu+ 'hahaha']}
-
Set
类似于数组的新的数据结构,但是成员值都是唯一的,没有重复的值。 定义var s = new Set(); 参数是一个数组,用Array.from()可以转化成数组。(数组去重的好方法~) 方法:add() delete() has() clear() 属性:Set.prototype.size
generator(超难了解即可)
es6目前如何使用(有些可以直接用,其他的如何用)
列几个es7特性(只需列出,不必学习)
-
数组、对象的解构赋值
“模式匹配”。 只要某种数据结构具有Iterator接口,都可以采用数组形式的解构赋值。 允许有默认值,也可以引用解构赋值的其他变量,但该变量必须已经声明。 数组的元素有次序,变量按次序取值;而对象属性没有次序,变量名必须和属性名相同才能取到值。 数组和对象都可以用于嵌套结构的对象。 用途:
-
rest参数使用方法
用于获取函数多余参数,rest参数中的变量是个数组,该变量将多余的参数放入数组。 rest参数之后不能再有其他参数。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。