在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;
}
函数内部的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);
}