• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

尚融宝06-ECMAScript基本和使用

武飞扬头像
zoeil
帮助1

目录

一、ECMAScript

1、ECMA

2、ECMAScript

3、什么是 ECMA-262

4、ECMA-262 历史

5、ECMAScript 和 JavaScript 的关系

二、基本语法

1、let声明变量

2、const声明常量

3、解构赋值

4、模板字符串

5、声明对象简写

6、定义方法简写

7、参数的默认值

8、对象拓展运算符

9、箭头函数

10、Promise


一、ECMAScript

1、ECMA

ECMA(European Computer Manufacturers Association)中文名称为欧洲计算机制造商协会,这个组织的目标是评估、开发和认可电信和计算机标准。1994 年后该组织改名为 Ecma 国际。

2、ECMAScript

ECMAScript 是由 Ecma 国际通过 ECMA-262 标准化的脚本程序设计语言。

3、什么是 ECMA-262

Ecma 国际制定了许多标准,而 ECMA-262 只是其中的一个

4、ECMA-262 历史

ECMA-262(ECMAScript)历史版本查看网址

第 1 版

1997 年

制定了语言的基本语法

第 2 版

1998 年

较小改动

第 3 版

1999 年

引入正则、异常处理、格

式化输出等。IE 开始支持

第 

2007 年

过于激进,未发布

第 5 版

2009 年

引入严格模式、JSON,扩

展对象、数组、原型、字符串、日期方法

第 

2015 

模块化、面向对象语法、

Promise、箭头函数、let、const、数组解构赋值等等

第 7 版

2016 年

幂运算符、数组扩展、

Async/await 关键字

第 8 版

2017 年

Async/await、字符串扩展

第 9 版

2018 年

对象解构赋值、正则扩展

第 10 版

2019 年

扩展对象、数组方法

ES.next

动态指向下一个版本

 

5、ECMAScript 和 JavaScript 的关系

一个常见的问题是,ECMAScript 和 JavaScript 到底是什么关系?

要讲清楚这个问题,需要回顾历史。1996 年 11 月,JavaScript 的创造者 Netscape 公司,决定将 JavaScript 提交给标准化组织 ECMA,希望这种语言能够成为国际标准。次年,ECMA 发布 262 号标准文件(ECMA-262)的第一版,规定了浏览器脚本语言的标准,并将这种语言称为 ECMAScript,这个版本就是 1.0 版。

因此,ECMAScript 和 JavaScript 的关系是,前者是后者的规格,后者是前者的一种实现(另外的 ECMAScript 方言还有 Jscript 和 ActionScript)

二、基本语法

ES6相对之前的版本语法更严格,新增了面向对象的很多特性以及一些高级特性。本部分只学习项目开发中涉及到ES6的最少必要知识,方便项目开发中对代码的理解。

1、let声明变量

创建文件夹02-ES6-demo,创建 01-let.js

  1.  
    // 1、var可以重复声明,let不可以
  2.  
    var a = 1;
  3.  
    var a = true
  4.  
    console.log(a);
  5.  
    let a = 1;
  6.  
    let a = true; // 未编译已经提示出错
  7.  
    console.log(a)
  8.  
     
  9.  
    // 2、var没用块级作用域,let具备块级作用域
  10.  
    var f = true;
  11.  
    if (f) {
  12.  
    var a = 'yes'
  13.  
    console.log(a);
  14.  
    }
  15.  
    console.log(a); // 这里也可以输出yes
  16.  
     
  17.  
    var f = true;
  18.  
    if (f) {
  19.  
    let a = 'yes'
  20.  
    console.log(a);
  21.  
    }
  22.  
    console.log(a); // let报错
  23.  
     
  24.  
    3.varlet都具备函数作用域
  25.  
     
  26.  
    function check() {
  27.  
    var a = "yes"
  28.  
    let b = "no"
  29.  
    }
  30.  
    console.log(a) // 报错
  31.  
    console.log(b) // 报错
  32.  
     
  33.  
    // 4.不存在变量提升
  34.  
     
  35.  
    console.log(a) // 输出undefined
  36.  
    var a
  37.  
     
  38.  
    console.log(a) // 报错:Cannot access 'a' before initialization
  39.  
    let a
学新通

可以使用visual studio 打开集成终端

学新通

 使用 node 文件名 执行脚本

学新通

2、const声明常量

创建 02-const.js

  1.  
    //1. 初始化时需要赋值
  2.  
    const A = "yes"
  3.  
    //2. 初始化后值不能改变
  4.  
    //A = "no" // 报错:Assignment to constant variable.
  5.  
    //3. 命名规范:大写字母和下划线
  6.  
    const CONSOLE_OUT = "out"
  7.  
     
  8.  
    //4. 当常量的地址不变时,可以添加值
  9.  
    const TAME = ['zyt', 'zjy', 'czh']
  10.  
    TAME.push('zyj')
  11.  
    console.log(TAME)
  12.  
     
  13.  
    TAME = 100 // 报错:TypeError: Assignment to constant variable.

3、解构赋值

创建 03-解构赋值.js

  1.  
    // 1.数组结构
  2.  
    const F4 = ['小沈阳', '刘能', '赵四', '宋小宝']
  3.  
    // let shenyang = F4[0] //这种方式也可以,但是如果数组有多个元素需要解析并赋值的话那样太麻烦了
  4.  
    // let liunneng = F4[1]
  5.  
    let [shenyang, liunneng, zhaosi, songxiaobao] = F4 // 使用中括号
  6.  
    console.log(shenyang)
  7.  
    console.log(liunneng)
  8.  
    console.log(zhaosi)
  9.  
    console.log(songxiaobao)
  10.  
     
  11.  
    // 2.对象解析
  12.  
    const zbs = {
  13.  
    username: '赵本山',
  14.  
    age: '不详',
  15.  
    sex: '男',
  16.  
    xiaopin: function () {
  17.  
    console.log("演小品")
  18.  
    }
  19.  
    }
  20.  
    // let username1 = zbs.username // 这种方式取值不需要相同的变量名也可以,但是如果对象有多个元素需要解析并赋值的话那样太麻烦了
  21.  
    let { username, sex, xiaopin } = zbs; // 使用大括号,设置对应同名属性获取值,不同名获取不到值
  22.  
    // console.log(username1)
  23.  
    console.log(username)
  24.  
    console.log(sex)
  25.  
    xiaopin()
学新通

4、模板字符串

创建 04-模板字符串.js

模板字符串相当于加强版的字符串,用反引号 `,除了作为普通字符串,还可以用来定义多行字符串,还可以在字符串中加入变量和表达式。

  1.  
    // ES6 引入新的声明字符串的方式 『``』 '' ""
  2.  
    //1. 声明
  3.  
    let str1 = '我是一个字符串'
  4.  
    let str2 = `我也是一个字符串`
  5.  
     
  6.  
    console.log(str1, typeof str1)
  7.  
    console.log(str2, typeof str2)
  8.  
     
  9.  
    // 2.内容中可以直接出现换行符
  10.  
    let list1 = `<ul>
  11.  
    <li>沈腾</li>
  12.  
    <li>玛丽</li>
  13.  
    <li>贾玲</li>
  14.  
    </ul>`
  15.  
    // 使用单引号换行会报错
  16.  
    let list2 = '<ul><li>沈腾</li><li>玛丽</li><li>贾玲</li></ul>'
  17.  
    console.log(list1)
  18.  
    console.log(list2)
  19.  
     
  20.  
    // 3.变量拼接
  21.  
    let name = '贾玲'
  22.  
    let out = `我喜欢${name}这个演员`
  23.  
     
  24.  
    console.log(out)
  25.  
     
学新通

5、声明对象简写

创建 05-声明对象简写.js

  1.  
    let username = 'Tom'
  2.  
    let age = 25
  3.  
    let sing = function () {
  4.  
    console.log('唱歌')
  5.  
    }
  6.  
     
  7.  
    // 传统
  8.  
    let person1 = {
  9.  
    username: username,
  10.  
    age: age,
  11.  
    sing: sing
  12.  
    }
  13.  
    console.log(person1)
  14.  
    person1.sing()
  15.  
     
  16.  
    // ES6:这样的书写更加简洁
  17.  
    let person2 = {
  18.  
    username,
  19.  
    age,
  20.  
    sing
  21.  
    }
  22.  
    console.log(person2)
  23.  
    person2.sing()
学新通

6、定义方法简写

创建 06-定义方法简写.js

  1.  
    // 传统
  2.  
    let person1 = {
  3.  
    sayHi: function () {
  4.  
    console.log('Hi')
  5.  
    },
  6.  
    }
  7.  
    person1.sayHi()
  8.  
     
  9.  
    // ES6
  10.  
    let person2 = {
  11.  
    sayHi() {
  12.  
    console.log('Hi')
  13.  
    },
  14.  
    }
  15.  
    person2.sayHi()
学新通

7、参数的默认值

注意:函数在JavaScript中也是一种数据类型,JavaScript中没有方法的重载

创建 07-参数的默认值.js

  1.  
    //ES6 允许给函数参数赋值初始值
  2.  
    //1. 形参初始值 具有默认值的参数
  3.  
    function add(a, b, c = 0) {
  4.  
    return a b c
  5.  
    }
  6.  
    let result = add(1, 2)
  7.  
    console.log(result)
  8.  
     
  9.  
    //2. 与解构赋值结合
  10.  
    function connect({ host = '127.0.0.1', username, password, port }) {
  11.  
    console.log(host)
  12.  
    console.log(username)
  13.  
    console.log(password)
  14.  
    console.log(port)
  15.  
    }
  16.  
    connect({
  17.  
    host: 'atguigu.com',
  18.  
    username: 'root',
  19.  
    password: 'root',
  20.  
    port: 3306,
  21.  
    })
学新通

8、对象拓展运算符

创建 08-对象扩展运算符.js
扩展运算符(spread)也是三个点(...)。它好比 rest 参数的逆运算,将一个数组转为用逗号分隔的参数序列,对数组进行解包。
  1.  
    // 展开对象
  2.  
    let person = { name: '路飞', age: 25 }
  3.  
     
  4.  
    // let someone = person // 引用赋值,此时对someone修改就是对person修改
  5.  
    let someone = { ...person } // 对象拷贝
  6.  
    someone.name = '索隆'
  7.  
    console.log(person)
  8.  
    console.log(someone)

9、箭头函数

创建 09-箭头函数.js
箭头函数提供了一种更加简洁的函数书写方式。基本语法是:
参数 => 函数体
箭头函数多用于匿名函数的定义
  1.  
    //声明一个函数
  2.  
    let fn = function(a){
  3.  
    return a 100
  4.  
    }
  5.  
     
  6.  
    //箭头函数
  7.  
    let fn = (a) => {
  8.  
    return a 100
  9.  
    }
  10.  
     
  11.  
    //简写
  12.  
    let fn = a => a 100
  13.  
     
  14.  
    //调用函数
  15.  
    let result = fn(1)
  16.  
    console.log(result)
学新通

10、Promise

Promise 是ES6 引入的异步编程的新解决方案。语法上 Promise 是一个构造函数, 用来封装异步操作并可以获取其成功或失败的结果。

创建 10-Promise基本语法.js

  1.  
    const fs = require('fs')
  2.  
     
  3.  
     
  4.  
    // 实例化Promise对象:
  5.  
    // Promise对象有三个状态:初始化,成功,失败
  6.  
    // resolve:函数类型的参数,可以将Promise的状态改为成功
  7.  
    // rejecg:函数类型的参数,可以将Promise的状态改为失败
  8.  
    const p = new Promise((resolve, reject) => {
  9.  
    // 调用readFile方法读取磁盘文件,异步操作
  10.  
    // 第一个参数:读取的文件路径
  11.  
    // 第二个参数:读取过程中对响应结果的处理
  12.  
    fs.readFile('./1.txt', (err, data) => {
  13.  
    // 当文件读取失败时,可以获取到失败的信息
  14.  
    if (err) reject(err) // 将Promise的状态修改为失败
  15.  
     
  16.  
    resolve(data) // 将Promise的状态修改为成功
  17.  
    })
  18.  
    })
  19.  
     
  20.  
    // 调用Promise的方法
  21.  
    // then:当Promise状态成功时调用执行
  22.  
    // catch:当Promise状态失败时调用执行
  23.  
    p.then(response => {
  24.  
    console.log(response.toString())
  25.  
    }).catch(error => {
  26.  
    console.log('出错了')
  27.  
    console.error(error)
  28.  
    })
学新通

总结:借助于Promise,可以使异步操作中的成功和失败的处理函数独立出来。

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhghafkb
系列文章
更多 icon
同类精品
更多 icon
继续加载