Array.length = 0과 Array = []의 차이점은 무엇입니까?
두 사람의 개념적 차이점을 설명 할 수 있습니까? 두 번째 배열이 기존 배열에 대한 모든 참조를 파괴하여 새 배열을 만들고 .length = 0은 배열을 비우는 곳을 읽으십시오. 하지만 내 경우에는 작동하지 않았습니다.
//Declaration
var arr = new Array();
아래는 반복해서 실행되는 루핑 코드입니다.
$("#dummy").load("something.php",function(){
arr.length =0;// expected to empty the array
$("div").each(function(){
arr = arr + $(this).html();
});
});
하지만 난으로 코드를 대체하는 경우 arr =[]
의 장소에서 arr.length=0
그것을 잘 작동합니다. 누구든지 여기서 무슨 일이 일어나고 있는지 설명 할 수 있습니까?
foo = []
새 배열을 만들고 이에 대한 참조를 변수에 할당합니다. 다른 모든 참조는 영향을받지 않으며 여전히 원래 배열을 가리 킵니다.
foo.length = 0
배열 자체를 수정합니다. 다른 변수를 통해 액세스하면 여전히 수정 된 배열을 얻습니다.
두 번째 배열이 기존 배열에 대한 모든 참조를 파괴하여 새 배열을 생성하는 곳을 읽으십시오.
그것은 거꾸로입니다. 새 배열을 만들고 다른 참조를 파괴하지 않습니다.
var foo = [1,2,3];
var bar = [1,2,3];
var foo2 = foo;
var bar2 = bar;
foo = [];
bar.length = 0;
console.log(foo, bar, foo2, bar2);
제공합니다 :
[] [] [1, 2, 3] []
arr.length =0;// expected to empty the array
그리고 적어도 처음에는 배열을 비 웁니다. 이 작업을 처음 수행 한 후 :
arr = arr + $(this).html();
… 배열을 문자열로 덮어 씁니다 .
length
문자열 의 속성은 읽기 전용이므로 할당 0
해도 효과가 없습니다.
여기에서의 차이점은 다음 예제에서 가장 잘 설명됩니다.
var arrayA = [1,2,3,4,5];
function clearUsingLength (ar) {
ar.length = 0;
}
function clearByOverwriting(ar) {
ar = [];
}
alert("Original Length: " + arrayA.length);
clearByOverwriting(arrayA);
alert("After Overwriting: " + arrayA.length);
clearUsingLength(arrayA);
alert("After Using Length: " + arrayA.length);
여기에서 라이브 데모를 볼 수 있습니다. http://www.jsfiddle.net/8Yn7e/
기존 배열을 가리키는 변수를 새 배열을 가리 키도록 설정하면 변수가 원래 배열에 대한 링크를 끊는 것뿐입니다.
array.length = 0
(및 예 array.splice(0, array.length)
를 들어 다른 방법) 을 사용할 때 실제로 원래 배열을 비우는 것입니다.
정말 작동합니까?
I did a little experiment here, and trying to "add" an Array with a String resulted in a string.
function xyz(){
var a = [];
alert(typeof(a+$("#first").html()));
// shows "string"
}
http://www.jsfiddle.net/4nKCF/
(tested in Opera 11)
참고URL : https://stackoverflow.com/questions/4804235/difference-between-array-length-0-and-array
'Development Tip' 카테고리의 다른 글
대규모 .NET 프로젝트에서 다국어 / 세계화를 구현하는 가장 좋은 방법 (0) | 2020.11.08 |
---|---|
JNI를 통해 C와 Java간에 포인터 전달 (0) | 2020.11.08 |
여러 작업을위한 동일한 작업 공간 (0) | 2020.11.08 |
Python "from [dot] package import…"구문 (0) | 2020.11.08 |
로컬 파일을 열 수 없음-Chrome : 로컬 리소스를로드 할 수 없습니다. (0) | 2020.11.08 |