함수 내부의 javascript console.log에서 전달되지 않은 매개 변수에 대한 출력으로 undefined를 제공하지만 함수 외부에서는 함수 브라우저가 명시 적으로 변수를 선언하므로 정의되지 않은 오류가 발생합니다. 예를 들어
console.log(x)
VM1533 : 1 Uncaught ReferenceError : x는 정의되지 않았지만
function test(x) {
console.log(x)
}
test();
정의되지 않습니다. test () 함수가 브라우저에서 다음과 같이 다시 작성되기 때문입니다.
function test(x) {
var x;
console.log(x)
}
또 다른 예 : -
var x =5 ;
function test(x) {
console.log(x)
}
test();
함수가 될 때 여전히 정의되지 않았습니다.
function test(x) {
var x;
console.log(x)
}
아래 예의 경고는 정의되지 않음을 제공합니다.
var x =5;
function test() {
alert(x);
var x =10;
}
test();
위의 기능은 다음과 같습니다.
function test() {
var x;
alert(x);
x =10;
}
함수 내 자바 스크립트 변수의 범위는 블록 수준이 아니라 함수 수준 범위입니다. 예를 들어
function varScope() {
for(var i = 0; i < 10; i++){
for(var j = 0; j < 5; j++){}
console.log("j is "+j)
}
console.log("i is "+i);
}
varScope();
다음과 같이 출력됩니다.
j is 5
i is 10
다시 함수는 다음과 같이되었습니다.
function varScope() {
var i;
var j;
for(i = 0; i < 10; i++){
for(j = 0; j < 5; j++){}
console.log("j is "+j)
}
console.log("i is "+i);
}