이 질문은 실제로 다른 실험 결과를 얻은 다른 question의 결과입니다. 결과는 더 혼란 스럽습니다. 나는 실제로 내부적으로 일어나는 일을 설명하는 해답을 기대하고 있습니다. 내가 시도 인 것을놀랍게도 동작하는 JavaScript 변수 할당
, 내가 어떤 명확한 설명 here을 얻었 기 때문에
내가 기본 가정으로 이것을 유지,var a = [];
a['a1'] = [];
a['a2'] = [];
console.log(a); // []
console.log(a['a1']); // []
console.log(a['a2']); // []
TEST 1
이 나를 혼란 b[0]
을 a
으로 인쇄하고에 액세스 할 수 있으므로 많은 작업이 필요합니다.속성, 나는 var b
문자 배열로 간주 될 수 있으므로 다른 값을 할당하려고했으나 성공하지 못했다고 생각했습니다. 기본 가정에서이 배열을 char 배열 (더 일반적으로 배열)로 처리 할 수 있으면 할당이 성공한 것입니다. 그것은 기본 가정을 깨뜨린다.
var b = 'abcd';
b['b1'] = [];
console.log(b); // abcd
console.log(b.length); // 4
console.log(b['b1']); // undefined
TEST 2
하지만 난 이렇게 만들 경우, 할당이 발생, 이로부터
var bb = ['a', 'b', 'c', 'd'];
bb[4] = [];
console.log(bb); // ["a", "b", "c", "d", []]
console.log(bb.length); // 4
console.log(bb[0]); // a
console.log(bb[4]); // []
, 난 b[4] = [];
성공하지만,
var b = 'abcd';
b[4] = [];
console.log(b); // abcd
console.log(b.length); // 4
console.log(b[4]); // undefined
제 질문은 왜 변수들이 몇 가지 공통적 인 기능을 공유하는 동안 이러한 할당이 다르게 작동하는 것입니까? 여기
이 (가) demo
사람이 나에게 실제로 내부에서 일어나는 일에 대해 명확한 설명을 적어주세요 수있다?
추가 테스트
내가 수치 할당에 노력한다면, 그것은 매우 다른 두를 형성 동작합니다.
var c = 1234;
c[4] = [];
console.log(c); //1234
console.log(c.length); // undefined
console.log(c[0]); //undefined
console.log(c[4]); //undefined
문자열이 문자 배열이라고 가정합니다. 그것은 아닙니다, 그래서 그 가정에서 파생되는 것은 아무것도 작동하도록 보장되지 않습니다. – JJJ
@Juhana는 결과가 혼동되기 때문에 문자 배열로 취급 될 수 있습니다. –