在 javascript console.log 中,函数内部给出未定义作为未传递参数的输出,但在函数外部它给出未定义错误,因为函数内部浏览器显式声明了变量。例如
console.log(x)
给出 VM1533:1 Uncaught ReferenceError: x is not defined 而
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;
}
函数内 javascript 变量的范围是函数级范围,而不是块级。例如
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);
}