zoukankan      html  css  js  c++  java
  • 常用的ES6

    1 let 和 const

    作用域: 只在声明指令的块级作用域内有效。
    let所声明的变量可以改变,值和类型都可以改变,没有限制。

    
    let a = 123
    a = 456 // 正确,可以改变
    let b = [123]
    b = [456] // 正确,可以改变
    

    const声明的变量不可改变值,这意味着const一旦声明变量必须立即初始化,不能以后赋值。

    
    const a ;//报错,一旦声明变量,应该立即赋值!!
    const b = 2;
    b = 3//报错,因为定义常量之后不能成重新赋值!!
    
    
    

    对于复合类型的变量,如数组和对象,变量名不指向数据,而是指向数据所在的地址。const命令只是保证变量名指向的地址不变,并不保证该地址的数据不变,所以将一个对象声明为常量必须非常小心

    
    const names = [];
    names = [1,2,3] //出错,因为变量names指向的地址不能发生改变,应始终指向[]所在的地址!!![1,2,3]与[]不是同一个地址
    const names = [];
    names = [1,2,3] //出错,因为变量names指向的地址不能发生改变,应始终指向[]所在的地址!!![1,2,3]与[]不是同一个地址
    //不会报错,因为names指向的地址不变,改变的只是内部数据
    
    const names = [];
    names[0] = 1
    names[1] = 2
    names[2] = 3
    
    

    2 数组

    一次性声明多个变量:

    
    let [a, b, c] = [1, 2, 3];
    console.log(a) // 1
    console.log(b) // 2
    console.log(c) // 3
    
    

    3 对象的合并:

    Object.assign()方法用于对象的合并,将原对象(source)的所有可枚举属性复制到目标对象(target)

    
    const target = { a: 1 };
    const source1 = { b: 2 };
    const source2 = { c: 3 };
    Object.assign(target, source1, source2);
    target // {a:1, b:2, c:3}
    
    

    Object.assign方法的第一个参数是目标对象,后面的参数都是源对象。

    注意,如果目标对象与源对象有同名属性,或多个源对象有同名属性,则后面的属性会覆盖前面的属性。

    
    const target = { a: 1, b: 1 };
    
    const source1 = { b: 2, c: 2 };
    const source2 = { c: 3 };
    
    Object.assign(target, source1, source2);
    target // {a:1, b:2, c:3}
    Object.assign 方法实行的是浅拷贝,而不是深拷贝。
    const obj1 = {a: {b: 1}};
    const obj2 = Object.assign({}, obj1);
    
    obj1.a.b = 2;
    obj2.a.b // 2
    
    

    4 Promise对象

    Promise 是异步编程的一种解决方案。

    5 import 和 export

    import 导入模块、export 导出模块

    
    // example2.js  // 导出默认, 有且只有一个默认
    export default const example2 = {
      name : 'my name',
      age : 'my age',
      getName  = function(){  return 'my name' }
    }
    //全部导入 // 名字可以修改
    import people from './example2.js'
    
    -------------------我是一条华丽的分界线---------------------------
    
    // example1.js // 部分导出
    export let name  = 'my name'
    export let age  = 'my age'
    export let getName  = function(){ return 'my name'}
    
    // 导入部分 // 名字必须和 定义的名字一样。
    import  {name, age} from './example1.js'
    
    

    //有一种特殊情况,即允许你将整个模块当作单一对象进行导入
    //该模块的所有导出都会作为对象的属性存在

    
    import * as example from "./example1.js"
    console.log(example.name)
    console.log(example.age)
    console.log(example.getName())
    
    -------------------我是一条华丽的分界线---------------------------
    
    // example3.js  // 有导出默认, 有且只有一个默认,// 又有部分导出
    export default const example3 = {
      birthday : '2018 09 20'
    }
    export let name  = 'my name'
    export let age  = 'my age'
    export let getName  = function(){ return 'my name'}
    
    // 导入默认与部分
    import example3, {name, age} from './example1.js'
    
                
    来源:https://segmentfault.com/a/1190000017471239
  • 相关阅读:
    常见的四种文本自动分词详解及IK Analyze的代码实现
    用java语言通过POI实现word文档的按标题提取
    spark的运行模式
    团队冲刺日志2
    简单之美-软件开发实践者的思考 03
    简单之美-软件开发实践者的思考 02
    简单之美-软件开发实践者的思考 01
    学习进度 15
    构建之法 06
    构建之法 05
  • 原文地址:https://www.cnblogs.com/qixidi/p/10160584.html
Copyright © 2011-2022 走看看