Javascript变量局部和全局混淆

Javascript变量局部和全局混淆,javascript,global-variables,local-variables,Javascript,Global Variables,Local Variables,这是代码 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将在函数外部未定义,但事实并非如此,它的打印b值甚至在函数外部,尽

这是代码

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
将在函数外部未定义,但事实并非如此,它的打印
b
值甚至在函数外部,尽管
a
未按预期定义。

如果不将var放在变量声明之前,它将被声明为全局变量

因为您没有将var放在
b
之前。它被宣布为全球的,因此你可以看到它的价值无处不在

其中as
a
具有var和作用域

同样

将值赋给未声明的变量会在执行赋值时隐式地将其创建为全局变量(它将成为全局对象的属性)。已声明变量和未声明变量之间的差异为…….[]


如果不将var放在变量声明之前,它将被声明为全局变量

因为您没有将var放在
b
之前。它被宣布为全球的,因此你可以看到它的价值无处不在

其中as
a
具有var和作用域

同样

将值赋给未声明的变量会在执行赋值时隐式地将其创建为全局变量(它将成为全局对象的属性)。已声明变量和未声明变量之间的差异为…….[]


您没有将
b
声明为局部变量。您将其指定为用于初始化
a
的表达式的一部分。由于它没有声明为函数的局部变量,因此创建了一个全局变量

要获取具有相同初始值的两个局部变量,请执行以下操作:

函数x(){
var b=10,a=b;
console.log(“在函数a中:+a);
console.log(“在功能b中:+b);
}
x();
控制台日志(“外部功能b:+b”);

console.log(“外部功能a:+a”)
您没有将
b
声明为局部变量。您将其指定为用于初始化
a
的表达式的一部分。由于它没有声明为函数的局部变量,因此创建了一个全局变量

要获取具有相同初始值的两个局部变量,请执行以下操作:

函数x(){
var b=10,a=b;
console.log(“在函数a中:+a);
console.log(“在功能b中:+b);
}
x();
控制台日志(“外部功能b:+b”);

console.log(“外部功能a:+a”),因为您没有提到

b


它具有全局范围:)

,因为您没有提到

b


它具有全局作用域:)

您应该在日志之前放置
+a
或者放置一个try-catch,因为异常正在破坏代码。@Rajesh异常是有意的,我们希望访问函数外部的
b
以报告错误。啊!那么我想我误解了这个问题。凉的此外,我们还可以结束这个问题,因为dupeYou应该在异常破坏代码之前放置
+a
日志,或者放置一个try-catch。@Rajesh异常是有意的,我们希望访问函数外部的
b
以报告错误。啊!那么我想我误解了这个问题。凉的另外,我们可以把这个问题作为一个双重提示来结束:如果代码的其余部分允许您(没有其他错误),您可以切换到
模式strict
来跟踪这些变量,您忘记声明了。我知道,您之前被它弄糊涂了小提示:如果代码的其余部分允许您(没有其他错误),你可以切换到
模式strict
来跟踪这些变量你忘记申报了吗?我知道,你在其他问题回答同样的问题之前就被它弄糊涂了是的,我现在应该删除这个问题吗?我不知道程序。是的,其他问题回答了同样的问题,我现在应该删除这个问题吗?我不知道程序。