【es6】set , map ,字符串,module

集合

Set可以去除数组重复元素

function dedupe(array) {
  return Array.from(new Set(array));
}

dedupe([1, 1, 2, 3]) // [1, 2, 3]

Set 结构没有键名,只有键值(或者说键名和键值是同一个值),所以keys方法和values方法的行为完全一致

   let set = new Set(['red','green','blue']);
   for (let item of set.keys()){
       console.log(item);
   }

   // red
   // green
   // blue

   let set = new Set(['red','green','blue']);
   for (let item of set.values()){
       console.log(item);
   }

   // red
   // green
   // blue

Map 键值对的集合,其中的key值类型可以是任意类型,包括对象,数组

    map的key值跟内存地址绑定,比如:

const map = new Map();

const k1 = ['a'];
const k2 = ['a'];
map
.set(k1, 111)
.set(k2, 222);

map.get(k1) // 111
map.get(k2) // 222

    如果 Map 的键是一个简单类型的值(数字、字符串、布尔值),则只要两个值严格相等,Map 将其视为一个键,比如0-0就是一个键,布尔值true和字符串true则是两个不同的键

let map = new Map();
map.set(-0, 123);
map.get(+0) // 123

map.set(true, 1);
map.set('true', 2);
map.get(true) // 1

map.set(undefined, 3);
map.set(null, 4);
map.get(undefined) // 3

字符串

静态字符串使用单引号,动态字符串使用反银行(注意字符串的连接)

// good
const a = 'foobar';
const b = `foo${a}bar`;

module

export命令规定的是对外的接口,必须与模块内部的变量建立一一对应关系采用下面的格式进行(注意大括号括起来)

// 写法一
export var m = 1;

// 写法二
var m = 1;
export {m};

// 写法三
var n = 1;
export {n as m};

import命令输入的变量都是只读的,因为它的本质是输入接口。也就是说,不允许在加载模块的脚本里面,改写接口。

import {a} from './xxx.js'

a = {}; // Syntax Error : 'a' is read-only;

import命令具有提升效果,会提升到整个模块的头部,首先执行

foo();

import { foo } from 'my_module';

import是静态执行(编译时执行,区别于require),所以不能使用表达式和变量(运行时执行),这些只有在运行时才能得到结果的语法结构。

// 报错
import { 'f' + 'oo' } from 'my_module';

// 报错
let module = 'my_module';
import { foo } from module;

// 报错
if (x === 1) {
  import { foo } from 'module1';
} else {
  import { foo } from 'module2';
}

使用export default 命令的时候引出接口和引入接口不需要大括号,因为一个模块只能有一个默认输出,命令也只能使用一次

// export-default.js
export default function foo() {
  console.log('foo');
}
// 或者写成
 function foo() {
  console.log('foo');
}

export default foo;
因为 export default命令其实只是输出一个叫做 default的变量,所以它后面不能跟变量声明语句。
// 正确
export var a = 1;

// 正确
var a = 1;
export default a;

// 错误
export default var a = 1;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值