string.length

length ๋Š” UTF-16 ์ฝ”๋“œ ์œ ๋‹›๊ธฐ์ค€์œผ๋กœ ๋ฌธ์ž์—ด ๊ธธ์ด๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” String object์˜ property์ด๋‹ค. string instance์˜ ์ฝ๊ธฐ ์ „์šฉ ๋ฐ์ดํ„ฐ ํ”„๋กœํผํ‹ฐ์ด๋‹ค.

const str = '๊ณ ์–‘์ด ์ตœ๊ณ ์–';
str.length; // 7

Syntax

string.length

Description

๋ฌธ์ž์—ด์— ์ฝ”๋“œ ์œ ๋‹› ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. JavaScript๋Š” ๋ฌธ์ž์—ด ํฌ๋งท์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” UFT-16์€ ๊ธฐ๋ณธ ๋ฌธ์ž๋ฅผ ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•ด 16๋น„ํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์ง€๋งŒ, ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ๋ฌธ์ž๋ฅผ ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•ด 2๊ฐœ์˜ 16 ๋น„ํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์‹ค์ œ ๋ฌธ์ž์™€ ์ผ์น˜ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋‹ค.

ECMAScript 2016์€ ์ตœ๋Œ€ ๊ธธ์ด๋ฅผ 2^53 - 1๋กœ ์žฌ์ •์˜ํ•˜์˜€๋‹ค. ๊ทธ ์ด์ „์—๋Š” ์ตœ๋Œ€ ๊ธธ์ด๋Š” ์ •ํ•ด์ ธ ์žˆ์ง€ ์•Š์•˜๋‹ค. Firefox์— ์žˆ๋Š” ๋ฌธ์ž์—ด์˜ ์ตœ๋Œ€ ๊ธธ์ด๋Š” 2**30 - 2 (~1GB) ์ด๋‹ค. Firefox 65 ์ด์ „์˜ ์ตœ๋Œ€ ๊ธธ์ด๋Š” 2**28-1(~256MB) ์˜€๋‹ค.

๋นˆ ๋ฌธ์ž์—ด์ธ ๊ฒฝ์šฐ length๋Š” 0dlek.

์ •์  ์†์„ฑ String.length๋Š” ๋ฌธ์ž์—ด์˜ ๊ธธ์ด์™€ ์ƒ๊ด€์ด ์—†์œผ๋ฉฐ String ํ•จ์ˆ˜์˜ arity(ํ•จ์ˆ˜๊ฐ€ ์ทจํ•˜๋Š” ์ธ์ˆ˜(arguments๋˜๋Š” ํ”ผ์—ฐ์‚ฐ์ž(operand)์˜ ์ˆซ์ž) ์ด๋‹ค. 1์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ๐Ÿค”

Unicode

๋ฌธ์ž๋Œ€์‹  code unit์„ ์„ธ๊ธฐ ๋•Œ๋ฌธ์— ๋ฌธ์ž ์ˆ˜๋ฅผ ์–ป์œผ๋ ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒƒ์ด ํ•„์š”ํ•˜๋‹ค. ๐Ÿ‘‡

function getCharacterLength (str) {
  // ์—ฌ๊ธฐ์„œ ์‚ฌ์šฉ๋˜๋Š” ๋ฌธ์ž์—ด ์ˆœํšŒ๋Š” ๋‹จ์ˆœํ•œ ์ฝ”๋“œ ๋‹จ์œ„๊ฐ€ ์•„๋‹ˆ๋ผ ๋ฌธ์ž ์œ„์—์„œ ์ˆœํšŒํ•œ๋‹ค.
  return [...str].length; // ๐Ÿง ๋ฐฐ์—ด์˜ ์š”์†Œ๋กœ ๋งŒ๋“  ํ›„ ๊ทธ length 
}

console.log(getCharacterLength('A\uD87E\uDC04Z')) // 3

// ๊ถŒ์žฅํ•˜์ง„ ์•Š์ง€๋งŒ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค.

Object.defineProperty(String.prototype, 'charLength', {
  get () {
    return getCharacterLength(this);
  }
});

console.log('A\uD87E\uDC04Z'.charLength); // 3

Examples

length ํ• ๋‹นํ•˜๊ธฐ

let myString = "๊ณ ์–‘์ด๋Š” ๊ท€์—ฝ๋‹ค";

// length๋ฅผ ํ• ๋‹นํ•ด๋„ ๊ด€์ฐฐ๊ฐ€๋Šฅํ•œ ๊ฒฐ๊ณผ๋Š” ์—†๋‹ค. 
myString.length = 4;
console.log(myString);
// expected output: "๊ณ ์–‘์ด๋Š” ๊ท€์—ฝ๋‹ค"
console.log(myString.length);
// expected output: 8

Last updated

Was this helpful?