String.prototype.includes()

includes() 메서드는 하나의 문자열이 다른 문자열에 포함되어 있는지를 결정하고, 그 결과를 true 또는 false 로 반환합니다. 

문법

str.includes(searchString[, position])

파라미터들

searchString
문자열 내에 찾기를 원하는 문자열입니다.
position
옵션입니다. searchString을 찾기 시작하는 문자열 내의 위치값을 나타내며, 기본값은 0입니다.

설명

여러분은 이 메서드를 사용하여 문자열 내에 찾고자 하는 문자열이 있는지를 확인할 수 있습니다.

대소문자 구분(Case-sensitivity)

includes() 메서드는 대소문자를 구별합니다. 예를 들면, 아래 코드는 false를 반환합니다:

'Blue Whale'.includes('blue'); // returns false

예제

includes() 사용하기

var str = 'To be, or not to be, that is the question.';

console.log(str.includes('To be'));       // true
console.log(str.includes('question'));    // true
console.log(str.includes('nonexistent')); // false
console.log(str.includes('To be', 1));    // false
console.log(str.includes('TO BE'));       // false

Polyfill

이 메서드는 ECMAScript 6 규격에 포함되었습니다만 아직까지는 모든 JavaScrpt가 이 기능을 지원하고 있지는 않습니다. 하지만 여러분은 이 메서드를 다음과 같이 쉽게 polyfill 할 수 있습니다:

if (!String.prototype.includes) {
  String.prototype.includes = function(search, start) {
    'use strict';
    if (typeof start !== 'number') {
      start = 0;
    }
    
    if (start + search.length > this.length) {
      return false;
    } else {
      return this.indexOf(search, start) !== -1;
    }
  };
}

Specifications

Specification Status Comment
ECMAScript 2015 (6th Edition, ECMA-262)
The definition of 'String.prototype.includes' in that specification.
Standard Initial definition.
ECMAScript 2017 Draft (ECMA-262)
The definition of 'String.prototype.includes' in that specification.
Draft  

브라우저 호환성

Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari
Basic support 41 40 (40) No support No support 9
Feature Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Basic support No support No support 40.0 (40) No support No support No support

String.prototype.contains

Firefox 18 - 39에서, include() 메서드의 이름은 contains()이었습니다. contains() 함수는 아래와 같은 이유로 bug 1102219에서 includes()로 변경되었습니다:

It's been reported that some websites using MooTools 1.2 broke on Firefox 17. This version of MooTools checks whether String.prototype.contains() exists and, if it doesn't,  MooTools adds its own function. With the introduction of this function in Firefox 17, the behavior of that check changed in a way that causes code based on MooTools' String.prototype.contains() implementation to break. As a result, the implementation was disabled in Firefox 17 and String.prototype.contains() was available one version later, in Firefox 18, when outreach to MooTools was leading to the release of MooTools version 1.2.6.

MooTools 1.3 forces its own version of String.prototype.contains(), so websites relying on it should not break. However, you should note that MooTools 1.3 signature and ECMAScript 6 signatures for this method differ (on the second argument). Later, MooTools 1.5+ changed the signature to match the ES6 standard.

Firefox 48에서, String.prototype.contains()은 제거되었습니다. 오직 String.prototype.includes()만 사용할 수 있습니다.

관련문서

문서 태그 및 공헌자

 이 페이지의 공헌자: pusanbear
 최종 변경: pusanbear,