这是代码。
function x() {
var a = b = 10;
console.log("In function a:" + a);
console.log("In function b:" + b);
}
x();
console.log("Outside function b:" + b);
console.log("Outside function a:" + a);
我期望的结果是,b
将在功能之外不确定,但事实并非如此,即使a
在函数之外,CC_3的打印值也未定义。
如果您不在变量声明之前放置var,则将其声明为全局。
由于您还没有将var放在b
之前。它被声明为全球,因此您可以在任何地方看到它的价值。
as as as as a
具有var且范围。
相同的文档
在执行分配时,将值分配给未确定的变量将其作为全局变量(它成为全局对象的属性)将其创建。声明和未申报的变量之间的差异是........ []
您没有将b
声明为本地变量。您将其分配为用于初始化a
的表达式的一部分。由于该函数不是本地声明的,因此创建了一个全局变量。
要获得具有相同初始值的两个本地变量,请执行此操作:
function x() {
var b = 10, a = b;
console.log("In function a:" + a);
console.log("In function b:" + b);
}
x();
console.log("Outside function b:" + b);
console.log("Outside function a:" + a);
,因为您没有提到
的变量类型b
它具有全局范围:)