웹 프론트엔드 JS 튜토리얼 JavaScript arrays_javascript 팁의 이상한 동작

JavaScript arrays_javascript 팁의 이상한 동작

May 16, 2016 pm 03:18 PM
JS 배열

프로그래밍 언어에서 배열의 중요성은 자명합니다. JavaScript의 배열은 가장 일반적으로 사용되는 객체 중 하나입니다. 배열은 약한 유형으로 인해 매우 유연하고 강력합니다. 동일한 유형 또는 해당 하위 유형의 요소만 저장할 수 있는 Java와 같은 강력한 유형의 고급 언어의 배열과 달리 JavaScript는 여러 유형의 요소를 동일한 배열에 저장할 수 있으며 길이도 동적으로 조정할 수 있습니다. 데이터가 증가함에 따라 또는 배열 길이에 대한 자동 변경을 줄입니다.

오늘은 JavaScript 배열을 검토한 후 그의 이상한 행동을 요약하여 공유하겠습니다. 잘못된 점이 있으면 지적해 주세요.

이상한 1: Array() 생성자 함수는 new 키워드를 사용하지 않고 호출할 수 있습니다:

Array() 생성자는 자신에게 전달된 매개변수를 배열의 요소로 사용하여 일반적으로 다음과 같이 호출합니다.

var a = new Array(1, 2, "bom!");
a.length; //3
console.log(a); //[1, 2, "bom!"] 
로그인 후 복사

그러나 다음과 같이 new를 생략할 수도 있습니다.

var a = Array(1, 2, "bom!");
a.length; //3
console.log(a); //[1, 2, "bom!"] 
로그인 후 복사

내부 구현 메커니즘이 무엇인지는 모르지만 생성자 함수는 다음과 같이 정의될 수 있을 것으로 추측됩니다.

function Array(args) {
//如果,this不是Array的实例的话,
//说明不是通过new调用的,则在这里再重新调用
if( !this instanceof Array) {
return new Array(args);
}//后面是正常调用时的实现代码<br />//...<br />} 
로그인 후 복사

이상한 2: 생성자에 매개변수가 하나만 전달되면 동작을 예측할 수 없습니다

하나의 매개변수만 전달되고 이 매개변수가 정수이면 배열이 얻어지며 길이는 이 매개변수와 같습니다

var a = new Array(12);
console.log(a.length); //12
console.log(a); //[] 
로그인 후 복사

부동 소수점 숫자만 전달하면 오류가 보고됩니다.

var a = new Array(1.1); //Uncaught RangeError: Invalid array length(…) 
로그인 후 복사

문자열을 배열의 첫 번째 요소로 사용하면 문자열 전달이 제대로 작동합니다.

var a = new Array("1.1");
console.log(a.length); //
console.log(a); //["1.1"] 
로그인 후 복사

그러나 모호함을 피하기 위해 리터럴 형식으로 직접 배열을 생성하는 것이 가장 좋습니다.

var a = []; //空数组
var a = [1, 1, "bom"]; //三个元素
var a = [12]; //一个元素,并且元素是12 
로그인 후 복사

이상한 3: 배열의 길이 속성을 수정할 수 있음(쓰기 가능)

다음과 같이 길이를 2에서 100으로 직접 변경했더니 수정에 성공했습니다! ! !

var a = [1, 2, 3, 4];
console.log(a.length); //4
a.length = 100; 
console.log(a.length); //100 
로그인 후 복사

길이가 100임에도 불구하고 a[4]-a[99] 요소는 존재하지 않습니다. 예를 들어 해당 값을 요청하는 경우 0에서 a.length까지 루프에서 수행하면 정의되지 않음이 반환됩니다. .

다음 시청:

var a = [1, 2, 3, 4];
a.length = 100;
console.log(a[10]); //undefined
console.log(99 in a); //false 
로그인 후 복사

아래 예와 다소 유사:

var a = [1, 2, 3, 4];
a[99] = undefined;
console.log(a.length); //100 
로그인 후 복사

차이점은 a[99]가 정의되지 않은 값을 가지고 있음에도 불구하고 우리가 만들었기 때문에 존재한다는 것입니다. 그러나 다음과 같이 a[4]부터 a[98]까지의 모든 요소는 존재하지 않습니다.

var a = [1, 2, 3, 4];
a[99] = undefined;
console.log(99 in a); //true;
console.log(98 in a); //false
console.log(a.length); //100 
로그인 후 복사

위 내용은 JavaScript 배열의 몇 가지 이상한 동작을 공유했습니다. 기사가 제대로 작성되지 않은 경우 양해해 주시기 바랍니다. 감사합니다!

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

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

es6 배열에서 요소를 제거하는 방법 es6 배열에서 요소를 제거하는 방법 Jan 11, 2023 pm 03:51 PM

방법: 1. 첫 번째 요소를 삭제하려면 Shift()를 사용하세요. 구문은 "array.shift()"입니다. 2. pop()을 사용하여 마지막 요소를 삭제하면 구문은 "array.pop()"입니다. 임의의 위치에서 요소를 삭제하려면 splice()를 사용하세요. 구문은 "array.splice(position, number)"입니다. 4. 마지막 N개 요소를 삭제하려면 length를 사용하세요. 구문은 "array.length=original array length-N"입니다. ; 5. 요소를 지우려면 빈 배열 "[ ]"를 직접 할당합니다. 6. 지정된 아래 첨자에서 요소를 삭제하려면 삭제를 사용합니다.

js에서 배열의 길이를 얻는 방법 js에서 배열의 길이를 얻는 방법 Jun 20, 2023 pm 05:33 PM

JS에서 배열의 길이를 얻는 것은 매우 간단합니다. 각 배열에는 배열의 최대 길이를 반환하는 길이 속성이 있습니다. 즉, 해당 값은 최대 첨자 값에 1을 더한 것과 같습니다. 숫자 첨자는 2^32-1보다 작아야 하므로 길이 속성의 최대값은 2^32-1과 같습니다. 다음 코드는 빈 배열을 정의한 다음 인덱스가 100인 요소에 값을 할당하고 length 속성은 101을 반환합니다. 따라서 길이 속성은 배열 요소의 실제 수를 반영할 수 없습니다.

자바스크립트에서 문자열을 배열로 변환하는 방법 자바스크립트에서 문자열을 배열로 변환하는 방법 Nov 23, 2022 pm 07:28 PM

3가지 변환 방법: 1. 분할()을 사용하여 주어진 문자열을 문자열 배열로 분할합니다. 구문은 "str.split(구분자, 배열의 최대 길이)"입니다. 2. 확장 연산자 "..."를 사용하여 반복 가능합니다. 문자열 객체를 문자 배열로 변환합니다("[...str]" 구문). 3. Array.from()을 사용하여 문자열을 "Array.from(str) " 구문으로 배열로 변환합니다.

js 배열을 PHP 배열로 변환할 수 있나요? js 배열을 PHP 배열로 변환할 수 있나요? Jun 02, 2023 am 10:06 AM

js 배열을 php 배열로 변환할 수 있습니다. 1. php 샘플 파일을 생성합니다. 2. "JSON.stringify()" 구문을 사용하여 js 배열을 JSON 형식의 문자열로 변환합니다. "json_decode()" 구문을 사용하여 "JSON 형식 문자열을 PHP 배열로 변환합니다. 여기에 매개변수 true가 추가됩니다. 이는 JSON 형식 문자열이 PHP 연관 배열로 변환됨을 의미합니다.

js 배열에서 요소를 삭제하는 방법에는 여러 가지가 있습니다. js 배열에서 요소를 삭제하는 방법에는 여러 가지가 있습니다. Aug 02, 2023 am 10:09 AM

js 배열에서 요소를 삭제하는 방법에는 4가지가 있습니다. 1. splice를 사용합니다. 2. 필터를 사용합니다. 3. pop 메서드를 사용하고 4. delete 키워드를 사용합니다.

JS 배열 정렬: sort() 메서드를 사용하는 방법 JS 배열 정렬: sort() 메서드를 사용하는 방법 Dec 27, 2023 pm 03:40 PM

JavaScript의 Array.prototype.sort() 메서드는 배열 요소를 정렬하는 데 사용됩니다. 이 메서드는 제자리에서 정렬됩니다. 즉, 새로 정렬된 배열을 반환하는 대신 원래 배열을 수정합니다. 기본적으로 sort() 메서드는 유니코드 코드 포인트 값에 따라 문자열을 정렬합니다. 즉, 객체나 기타 복잡한 데이터 유형을 정렬하는 대신 주로 문자열과 숫자를 정렬하는 데 사용됩니다.

JavaScript에서 배열 요소의 길이와 합계를 찾는 방법 JavaScript에서 배열 요소의 길이와 합계를 찾는 방법 Sep 20, 2022 pm 02:11 PM

JavaScript에서는 길이 속성을 사용하여 배열의 길이를 얻을 수 있으며 구문은 "array object.length"입니다. 감소() 또는 감소Right() 함수를 사용하여 요소의 합계를 찾을 수 있습니다. 구문은 " arr.reduce(function f(pre,curr){ return pre+cur})" 또는 "arr.reduceRight(function f(pre,curr){return pre+cur})".

js 배열을 PHP 배열로 변환하는 방법 js 배열을 PHP 배열로 변환하는 방법 Mar 22, 2023 am 11:24 AM

웹 개발에서는 자바스크립트(JS)와 PHP가 가장 많이 사용되는 프로그래밍 언어이기 때문에 개발 과정에서 배열은 불가피합니다. 이러한 상황에 대응하여 JS 배열을 PHP 배열로 변환해야 하는 경우가 많습니다. 이 기능을 구현하는 방법은 여러 가지가 있으며, 아래에서 하나씩 소개하겠습니다.

See all articles