zoukankan      html  css  js  c++  java
  • ES6基础

    JS为什么需要块级作用域(ES6引入let关键字的原因)?

    场景一:内层变量可能覆盖外层变量

    变量提升导致内层变量覆盖了外层变量
    
        var tmp = new Date();
        function f() {
          console.log(tmp);
          if (false) {
            var tmp = 'hello world';
          }
        }
        f(); // undefined
    

    场景二:用来计数的循环变量泄露为全局变量

        var s = 'hello';
        for (var i = 0; i < s.length; i++) {
          console.log(s[i]);
        }
        console.log(i); // 5
    

    不再需要IIFE(立即调用函数表达式)

        (function () {
            statements
        })();
    

    块级作用域存在暂时性死区,且不存在变量提升

    关于顶层对象

    • ES6声明变量的六种方式:var function let const import class
    • var 和function兼容以前JS版本,全局变量依旧为顶层对象属性
    • let const class全局变量不属于顶层对象
    • ES6开始,全局变量和顶层对象属性逐渐脱离

    关于箭头函数

    • 函数体内的this对象指向函数定义时候的对象,ES5中this指向使用时候的对象
    • 箭头函数不可以作为构造函数,所以不能使用new
    • 不可以使用arguments对象,该对象在函数体内不存在,若要使用,可以使用rest参数替代
    • 不可以使用yield命令

    运行时加载和编译时加载

    • 运行时编译:AMD/CommonJS模式下,获取一个模块内某个方法,必须全部加载整个模块对象后,才可以获取到,依赖关系只能在运行时获取,此种类型称为运行时加载
    • 编译时加载:ES6中的模块功能,趋向于静态化,通过export和import方法,使得模块加载在编译时候就能完成,需要哪个加载哪个,因此加载效率比AMD或CommonJS要高。由于ES6的模块化是在编译时候进行,因此可以进行代码静态分析,引入宏或类型校验等。
    // CommonJS模块
    let { stat, exists, readFile } = require('fs');
    // 等同于
    let _fs = require('fs');
    let stat = _fs.stat;
    let exists = _fs.exists;
    let readfile = _fs.readfile;
    CommonJS先加载整个模块对象,然后从对象中获取所需方法,此过程只能在运行时加载
    
    import { stat, exists, readFile } from 'fs';
    ES6中单独加载所需模块
    
    • 宏:将一些命令组织到一起作为一个单独命令完成一个特定的任务。

    ES6模块化的好处:

    • 不再需要UMD(通用模块规范)格式整合AMD和CommonJS了,服务器和浏览器统一使用ES6模块化加载方式
    • 浏览器新的API就可以用模块化格式提供,而非做成全局变量或者navigator的属性
    • 不再需要命名空间,eg:Math等,
  • 相关阅读:
    暑期总结1
    python +request 之数据库断言
    django接口开发之restful风格
    python +unittest 测试报告的生成
    Django学习笔记七----操作models修改数据库表结构
    Django学习笔记七----操作models,对数据库进行操作
    django学习六--操作model创建数据库表
    appium+python app自动化
    django学习五----redirect和,HttpResponsePermanentRedirect重定向
    html action属性
  • 原文地址:https://www.cnblogs.com/nanhuaqiushui/p/11774270.html
Copyright © 2011-2022 走看看