ECMAScript 6基础
2024-09-24 05:57:12
ECMAScript 和 JavaScript 是什么关系?
1996 年 11 月,JavaScript 的创造者 Netscape 公司,希望JavaScript能够成为国际标准,将其提交给标准化组织 ECMA。次年,ECMA 发布了ECMAScript 1.0 版。不叫 JavaScript的原因:一是商标,JavaScript 已被 Netscape 公司注册为商标;二是体现其制定者是 ECMA,不是 Netscape,有利于保证其的开放性和中立性。
let 和 const 命令
let声明变量
块状作用域(任意大括号包含的变量都只在大括号里起作用,超出则报错)
{let a=20;}
console.log(a);//报错
//使用var
var a = []; for (var i = 0; i < 5; i++) { a[i] = function () { console.log(i); }; } a[3](); // 结果为5
//使用let
var a = []; for (let i = 0; i < 5; i++) { a[i] = function () { console.log(i); }; } a[3](); // 结果为3
不能重复声明
let a=20; let a=10; console.log(a);//报错
没有变量提升
console.log(a);//报错 let a=20;
暂时性死区(在代码块内,使用let命令声明变量之前,该变量都是不可用的),简称TDZ
var a = 123; if (true) { a = 'abc'; let a;//在let命令声明变量a之前,都属于变量a的“死区”。 }
const 声明常量(声明一个只读的常量。一旦声明,常量值不可变)
声明必须同时赋值
const a; a=20; console.log(a);//报错
const 声明与 let 声明一样:无变量提升、块级作用域、暂时性死区、不可重复声明。
字符串的扩展
模板字符串
var y = 2018,m = 5,d = 7; var str = `今天是${y}年${m}月${d}日`;
部分新方法
var str = "hello"; //判断是否包含某指定的字符 var res1 = str.includes("d");//res1结果为 false //判断是否以某字符开头 var res2 = str.startsWith("e");//res2结果为 false
//判断是否一某字符结尾 var res3 = str.endsWith("o");//res3结果为 true //让字符串重复几次 var res4 = str.repeat(3);//res4结果为 hellohellohello
函数的扩展
默认值
//函数的默认值 function fn(a,b = 20) { console.log(a,b); } fn(10);//结果为10 20
剩余参数
//剩余参数 function fn(a,...b) { console.log(a,b); } fn(10,[2,3,4]);//结果为
箭头函数
//有参数 var fn1=num=>num;//相当于var fn1=function(num){return num;}
//无参数
var fn2=()=>10;//相当于var fn2=function(){return 10;}
//多个参数
var fn3=(num1,num2)=>num1+mun2;//或者var fn3=(num1,num2)=>{return num1+num2};
//map的用法
[1,2,3].map(num=>num*2);//相当于var fn=[1,2,3].map(function(num){return num*2;});
set方法
Set是一个构造函数,可创建出类似于数组的数据结构一般用于创建不重复的数组
//创建set数组 var arr=new Set([1,2,3]); //添加数据 arr.add(4); //删除指定数据 arr.delete(4);//判断数组是否有某指定元素 var res=arr.has(2);//res 结果为 true
//控制台输出数组元素 for(let [key,value] of arr.entries()){ console.log(value); }
//删除所有元素
arr.clear();
promise 的用法
回调函数
function a(callBack) { console.log("我是主函数"); callBack(); } function b() { console.log("我是回调函数") } a(b);
多层回调
function run() { var obj=new Promise(function (resolve,reject) { resolve("运行成功的函数"); reject("运行失败的函数"); }) return obj; } run().then(function () { //执行一些功能 }).then(function () { //再执行一些功能 })
类与继承
class Person{ constructor(name,age){ this.name=name; this.age=age; } static tell(){ alert("hello"); } say(){ alert(this.name+this.age); } } var per=new Person("David",23); console.log(per.name); per.say(); //static修饰的方法是类直接调用的不能用new出来的对象调用Person.tell(); class Student extends Person{ constructor(name,age,score){ super(name,age); this.score = score; } show(){ alert(this.name + this.score); } } var stu=new Student("Nancy",24,80); stu.show(); stu.say();
最新文章
- CSS3 基于关系的选择器
- 开启A20线(部分译)
- Python中的map( )和reduce( )
- Spring Security 3整合CAS 实现SSO
- 数学 - Whu 1603 - Minimum Sum
- 编写可测试的JavaScript代码
- Scala: 包对象
- YII2 实现后台操作记录日志(转)
- Node.js高级编程读书笔记 - 1 基本概念
- oracle--创建表空间、用户名、密码
- python遍历数据
- JavaScript的DOM操作(1)
- iOS开发——开发必备OC篇&;彩票实战之精华讲解
- ZOJ Monthly, August 2014
- MySql查看表信息
- Spring发送电子邮件
- Codeforces Round #380 (Div. 2)D. Sea Battle
- springboot学习随笔(四):Springboot整合mybatis(含generator自动生成代码)
- May 27. 2018 Week 22nd Sunday
- VsCode下代码导航