>  기사  >  웹 프론트엔드  >  es6에 추가된 새로운 데이터 유형은 무엇입니까?

es6에 추가된 새로운 데이터 유형은 무엇입니까?

青灯夜游
青灯夜游원래의
2021-09-03 15:42:397878검색

ES6에 새로 추가된 데이터 유형: 1. 기호 유형, 3. 지도 유형, 5. WeakMap 유형,

es6에 추가된 새로운 데이터 유형은 무엇입니까?

이 튜토리얼의 운영 환경: Windows 7 시스템, ECMAScript 버전 6, Dell G3 컴퓨터.

ES6 새로운 데이터 유형

  • 심볼 유형 (기본)
  • Set 유형 (복잡함)
  • Map 유형(복잡함)
  • WeakSet 유형 (복잡함)
  • WeakMap 유형 (complex)
  • TypedArray type(complex)

es6 이전에는 어떤 데이터 유형이 사용 가능했는지 살펴보겠습니다.es6 之前有哪些数据类型,

  • 基本类型:

    • string

    • null

    • undefined

    • number

    • boolean

  • 复杂类型:

    • object

由于新出的类型在平常工作中基本用不到,所以具体介绍还是直接看 MDN 的专业解释把,下面给大家讲解一些面试经常遇到的问题....

Q1:怎么让一个对象具有一个私有属性?(Symbol有什么用?)

Answer:用 Symbol 作为对象的 key 即可

{ // 私有作用域
  let a = Symbol()
  window.oo = {
    name: '对象',
    age: 18,
    [a]: '这是一个私有属性'
  }
  console.log(oo[a]) // 这是一个私有属性
}
// 不能再作用域外打印...

此时对象 oo 就有一个私有属性,该属性在作用域外就无法正确打印。

es6에 추가된 새로운 데이터 유형은 무엇입니까?

Q2:怎么快速去重一个数组?

Answer:用 SetArray.form()
这是一道很经典的面试题,在此之前先讲讲 es6 之前的去重方法:

let array = [1, 2, 3, 4, 4, 5, 5, 6]
~function uniq() {
  let result = []
  let hash = {}
  for (let i=0; i<array.length><p class="image-package"><img src="https://img.php.cn/upload/image/369/298/171/1630654569660947.png" title="1630654569660947.png" alt="es6에 추가된 새로운 데이터 유형은 무엇입니까?"></p>
<p>但是该方法有巨大的弊端,去重数组中不能有对象,而且该方法返回的结果中都是字符串,所以无法对这样的数组进行去重。</p>
<p>当我们使用 <code>Set</code> 时</p>
<pre class="brush:php;toolbar:false">let a = {a: 11}
let array = [0, 1, '1', '22', 22, a, a, 66]
~function uniq() {
  return Array.from(new Set(array)) // 装比写法 [... new Set(array)]
}()

es6에 추가된 새로운 데이터 유형은 무엇입니까?

甚至连对象的引用也能去重,很简略的方法。

Q3:Map有啥用?

Answer:map 更像是对象的拓展,他的 key 可以是任意类型,不再像之前的对象 key 只能是字符串,也就是这个特性,我们可以去优化之前的去重,但是也没有必要,因为已经有 set 了。

举个栗子

let myMap = new Map()
 
let keyObj = {}
let keyFunc = function () {}
let keyString = "a string"
 
// 添加键
myMap.set(keyString, "和键'a string'关联的值");
myMap.set(keyObj, "和键keyObj关联的值");
myMap.set(keyFunc, "和键keyFunc关联的值");

es6에 추가된 새로운 데이터 유형은 무엇입니까?

Q4:WeakMap 和 Map 的区别?

Answer:

  • WeakMap 区别就是对 key 的引用是弱引用

  • WeakMapkey

    • 기본 유형:


      string

      null

      정의되지 않음

      번호

      부울

      🎜🎜🎜🎜🎜복잡한 유형: 🎜
        🎜🎜object🎜🎜🎜🎜🎜🎜새로운 유형은 기본적으로 일상 업무에 사용되지 않으므로 자세한 소개는 MDN를 참조하세요. 설명, 인터뷰에서 자주 묻는 질문은 다음과 같습니다....🎜🎜🎜Q1: 개체에 개인 속성을 갖는 방법은 무엇입니까? (Symbol의 용도는 무엇인가요?)🎜🎜🎜답변: Symbol을 개체의 로 사용하세요🎜rrreee🎜이때 개체 oo를 사용할 수 있습니다. 범위 밖에서는 올바르게 인쇄할 수 없는 개인 속성입니다. 🎜🎜<img src="https://img.php.cn/upload/image/226/770/242/163065456437873es6%EC%97%90%20%EC%B6%94%EA%B0%80%EB%90%9C%20%EC%83%88%EB%A1%9C%EC%9A%B4%20%EB%8D%B0%EC%9D%B4%ED%84%B0%20%EC%9C%A0%ED%98%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C?" title="163065456437873es6에 추가된 새로운 데이터 유형은 무엇입니까?" alt="es6에 추가된 새로운 데이터 유형은 무엇입니까?">🎜🎜🎜 Q2: 배열에서 중복 항목을 빠르게 제거하는 방법은 무엇입니까? 🎜🎜🎜답변: <code>SetArray.form()을 사용하세요.🎜이것은 매우 고전적인 인터뷰 질문입니다. 그 전에 es6에 대해 이야기해 보겠습니다. 이전 중복 제거 방법: 🎜rrreee

        es6에 추가된 새로운 데이터 유형은 무엇입니까?🎜🎜그러나 이 방법에는 큰 단점이 있습니다. 중복 제거 배열에는 개체가 있을 수 없으며, 이 방법으로 반환되는 결과는 모두 문자열이므로 이러한 배열을 처리할 수 없습니다. 중복 제거. 🎜🎜Set을 사용하는 경우🎜rrreee

        es6에 추가된 새로운 데이터 유형은 무엇입니까?🎜🎜객체 참조도 중복 제거할 수 있는데, 이는 매우 간단한 방법입니다. 🎜🎜🎜Q3: 지도의 용도는 무엇인가요? 🎜🎜🎜답변: map은 객체의 확장과 더 비슷합니다. key는 이전 객체인 key와 달리 모든 유형이 될 수 있습니다. 문자열일 수 있습니다. 즉, 이 기능을 사용하면 이전 중복 제거를 최적화할 수 있지만 이미 설정이 있으므로 필요하지 않습니다. 🎜🎜예를 들어주세요🎜rrreee

        es6에 추가된 새로운 데이터 유형은 무엇입니까?🎜🎜🎜Q4: WeakMap과 Map의 차이점은 무엇인가요? 🎜🎜🎜답변: 🎜

          🎜🎜WeakMap 차이점은 key에 대한 참조가 약한 참조라는 것입니다. 🎜🎜🎜 🎜WeakMapkey는 객체만 될 수 있습니다🎜🎜🎜🎜약한 참조가 무엇인지 알아야 합니다. 🎜문서: ES2015 학습 및 사용 WeakMap🎜🎜🎜Q5: WeakSet과 Set의 차이점은 무엇인가요? 🎜🎜🎜답변: 위와 동일🎜🎜🎜Q6: TypedArray의 용도는 무엇인가요? 🎜🎜🎜답변: 이 유형은 주로 바이너리 파일(오디오, 파일, 비디오, 사진...)을 처리하는 데 사용되며 자체 휠을 개발하지 않는 한 일반적으로 사용되지 않습니다. 🎜🎜【추천 학습: 🎜javascript 고급 튜토리얼🎜】🎜

    위 내용은 es6에 추가된 새로운 데이터 유형은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

    성명:
    본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.