ECMAScript
2017-04-13 10:57:39 0 举报
AI智能生成
登录查看完整内容
ECMAScript(简称 ES)是一种由 ECMA 国际组织制定和维护的脚本语言规范。它被广泛应用于网页和网络应用程序的开发中,为开发者提供了一种标准化的方式来编写跨平台的代码。ES 的目标是提供一种简单、灵活、可扩展的语言,使开发人员能够更容易地创建高质量的代码。 ES 的核心特性包括: - 语法简洁明了,易于学习和使用。 - 具有丰富的内置对象和函数,方便开发者进行各种操作。 - 支持面向对象编程,允许开发者创建复杂的数据结构和功能。 - 具有良好的兼容性,可以在不同浏览器和平台上运行。
作者其他创作
大纲/内容
申明方法
var
let
等同于var
所在代码范围内有效
取消了变量提升
不能再声明前使用
暂时性死区
这是一个申明,可以出现在任何位置,一旦申明,则变量变成局部值
同一作用域不允许重复申明变量
非同层可以重复定义
块级作用域
function
const
申明一个只读的常量
作用域范围内有效
除了常量定义,其他和let一致
其实常量定义指的是地址不可变
如果定义了数组,往数组里push是可以的
如要冻结不可操作
Object.freeze
const foo = Object.freeze({abc:123});
import
class
解构赋值
数组解构赋值
解构不成功,值为undefined
等号右边不是数组,报错
// 报错let [foo] = 1;let [foo] = false;let [foo] = NaN;let [foo] = undefined;let [foo] = null;let [foo] = {};
Set结构解构
只要某种数据结构具有 Iterator 接口,都可以采用数组形式的解构赋值
默认值
对象的解构赋值
对象的解构与数组有一个重要的不同。数组的元素是按次序排列的,变量的取值由它的位置决定;而对象的属性没有次序,变量必须与属性同名,才能取到正确的值。
不将大括号写在行首,避免JavaScript将其解释为代码块
类似数组的对象都有一个length属性,因此还可以对这个属性解构赋值。let {length : len} = 'hello';len // 5
字符串的解构赋值
数值和布尔值的解构赋值
函数参数的解构赋值
圆括弧的用法没有细看,以后确实需要再详细研究。目前是统一不用
字符串的扩展
字符的Unicode表示法
codePointAt
String.fromCodePoint
字符串的遍历器接口
for (let codePoint of 'foo') { console.log(codePoint)}// \"f\"// \"o\"// \"o\"
at()
'𠮷'.charAt(0) // \"\\uD842\"
'𠮷'.at(0) // \"𠮷\"
normalize()
includes
startsWith
endsWith
repeat
padStart
padEnd
正则扩展
RegExp构造函数
字符串的正则方法
match
replace
search
split
sticky
flags
RegExp.escape
dotAll
数值的扩展
二进制和八进制表示法
0b
0o
Number.isInteger()
Number.EPSILON
安全整数和Number.isSafeInteger()
Math对象的扩展
Math.trunc()
Math.sign()
Math.cbrt()
Math.clz32()
Math.imul()
Math.fround()
Math.hypot()
Math.expm1()
Math.exp()-1
Math.log1p()
Math.log(x+1)
Math.log10()
Math.log2()
三角函数方法
Math.sinh(x)
Math.cosh(x)
Math.tanh(x)
Math.asinh(x)
Math.acosh(x)
Math.atanh(x)
Math.signbit()
指数运算符
**
2**3=8
**=
数组的扩展
Array.from()
Array.of()
数组实例的copyWithin()
数组实例的fill()
数组实例的entries(),keys()和values()
数组实例的includes()
Map结构的has方法,是用来查找键名的
Set结构的has方法,是用来查找值的
map()会跳过空位,但会保留这个值
join()和toString()会将空位视为undefined,而undefined和null会被处理成空字符串。
for of
函数的扩展
默认参数
函数的 length 属性
可用来获取参数数量
对于默认值参数和rest参数,不参与计数
作用域
错误处理
function throwIfMissing() { throw new Error('Missing parameter');}function foo(mustBeProvided = throwIfMissing()) { return mustBeProvided;}foo()// Error: Missing parameter
rest参数
形式为“...变量名”
rest 参数 只能是最后一个参数
函数的length属性,不包括 rest 参数
扩展运算符
...
替代ES5数组的apply方法
扩展运算符的应用
合并数组
与解构赋值结合
函数的返回值
可以返回数组作为多个返回值
字符串
字符串转数组
可以识别32位Unicode字符
实现了Iterator接口的对象
Map和Set结构,Generator函数
name 属性
箭头函数
ES6允许使用“箭头”(=>)定义函数。
注意点
函数体内的this对象,就是定义时所在的对象,而不是使用时所在的对象。
不可以当作构造函数,也就是说,不可以使用new命令,否则会抛出一个错误
不可以使用arguments对象,该对象在函数体内不存在。如果要用,可以用Rest参数代替
不可以使用yield命令,因此箭头函数不能用作Generator函数
嵌套的箭头函数
绑定this
尾递归
尾调用
尾递归优化
对象的扩展
属性的简洁表示法
属性名表达式
方法的 name 属性
Object.is()
Object.assign()
如果目标对象与源对象有同名属性,或多个源对象有同名属性,则后面的属性会覆盖前面的属性。
只拷贝源对象的自身属性(不拷贝继承属性),也不拷贝不可枚举的属性
常见用途
为对象添加属性
为对象添加方法
克隆对象
合并多个对象
为属性指定默认值
属性的可枚举性
属性的遍历
for...in
Object.keys(obj)
Object.getOwnPropertyNames(obj)
Object.getOwnPropertySymbols(obj)
Reflect.ownKeys(obj)
__proto__属性,Object.setPrototypeOf(),Object.getPrototypeOf()
Object.setPrototypeOf()(写操作)、Object.getPrototypeOf()(读操作)、Object.create()(生成操作)代替__prototype__
Object.setPrototypeOf()(写操作)、Object.getPrototypeOf()(读操作)、Object.create()(生成操作)代替
Symbol
Symbol 值作为对象属性名时,不能用点运算符
这是独一无二的
实例:消除魔术字符串
Set和Map数据结构
set
类似于数组,但是成员的值都是唯一
Same-value equality
类似于全等于
方法
add(value):添加某个值,返回Set结构本身
delete(value):删除某个值,返回一个布尔值,表示删除是否成功
has(value):返回一个布尔值,表示该值是否为Set的成员
clear():清除所有成员,没有返回值
对象总是不相等
遍历方法
keys():返回键名的遍历器
values():返回键值的遍历器
entries():返回键值对的遍历器
forEach():使用回调函数遍历每个成员
Set 可以很容易地实现并集(Union)、交集(Intersect)和差集(Difference)
属性
size
WeakSet
不重复的值的集合
只能是对象,而不能是其他类型的值
WeakSet 适合临时存放一组对象
map
Proxy
源编程
可以用来实现 我要的继承
ownKeys(target)
preventExtensions(target)
getPrototypeOf(target)
isExtensible(target)
Reflect
Promise
Iterator和for of循环
Generator函数语法
ECMAScript
do
给块级作用域返回值
顶层对象
window
浏览器
global
Node
包括
非顶层对象
模板
模板函数开发
0 条评论
回复 删除
下一页