Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我们如何访问局部变量?_Javascript - Fatal编程技术网

Javascript 我们如何访问局部变量?

Javascript 我们如何访问局部变量?,javascript,Javascript,有一个测试来确定a是未定义的还是b是未定义的。然而让我困惑的是,当a和b都是局部变量时,我们如何访问console.log中的a和b呢。这与我们在括号内定义函数的方式有关吗?我是JavaScript新手,我正在努力理解它是如何工作的 (function(){ var a = b = 3; })(); console.log("a defined? " + (typeof a !== 'undefined')); console.log("b defined? " + (typeof b

有一个测试来确定a是未定义的还是b是未定义的。然而让我困惑的是,当a和b都是局部变量时,我们如何访问console.log中的a和b呢。这与我们在括号内定义函数的方式有关吗?我是JavaScript新手,我正在努力理解它是如何工作的

(function(){
    var a = b = 3;
})();

console.log("a defined? " + (typeof a !== 'undefined'));
console.log("b defined? " + (typeof b !== 'undefined'));

从函数外部,您的console.log调用可以访问b,但不能访问a。变量a由var语句在函数中声明;但是,变量b由a的初始化表达式隐式全局化

var语句被解释为好像它是编写的一样

var a = (b = 3);
var语句的语法是这样的:初始化不会将b定义为局部变量。您可以使用类似您的代码或通过添加

"use strict";

就在var语句之前,注意到在函数外部隐式全局使用b时会出现错误。

,您的console.log调用可以访问b,但不能访问a。变量a由var语句在函数中声明;但是,变量b由a的初始化表达式隐式全局化

var语句被解释为好像它是编写的一样

var a = (b = 3);
var语句的语法是这样的:初始化不会将b定义为局部变量。您可以使用类似您的代码或通过添加

"use strict";

就在var语句之前,注意到隐式全局使用b时会出现错误。

在您的示例中,有一个全局变量b和一个局部变量a。只有b在函数外部可见

当您尝试在控制台输出中引用a时,它将引用尚未定义的全局变量a

b是全局的,因为没有定义它的var语句。该行的var仅适用于a


a是一个局部变量,仅在用var很好地声明的函数内部可见。但是,在程序的其他部分中仍然可以有变量,这些变量也称为a。您的控制台输出就是一个例子。但是这些是完全独立的变量。

在你的例子中,你有一个全局变量b和一个局部变量a。只有b在函数外部可见

当您尝试在控制台输出中引用a时,它将引用尚未定义的全局变量a

b是全局的,因为没有定义它的var语句。该行的var仅适用于a

a是一个局部变量,仅在用var很好地声明的函数内部可见。但是,在程序的其他部分中仍然可以有变量,这些变量也称为a。您的控制台输出就是一个例子。但这些是完全独立的变量。

变量a在IIFE中,因此在父范围中不可见,因为它后面有var关键字

假设变量b来自IIFE的外部范围,但它并没有var关键字

typeof运算符的工作方式是,它允许您为类型测试输入任何有效的变量名,甚至是未声明的变量名,即:

变量a在IIFE中,因此它在父作用域中不可见,因为它后面有var关键字

假设变量b来自IIFE的外部范围,但它并没有var关键字

typeof运算符的工作方式是,它允许您为类型测试输入任何有效的变量名,甚至是未声明的变量名,即:


我试图在一类正规函数中处理同样的问题,但都没有定义。为什么它在生活中起着不同的作用?你能给我发一些关于生命的读物,让我了解它与普通函数的工作原理有什么不同吗?@Mozein它在生命中的工作原理没有什么不同。你调用正常函数了吗?IIFE涉及函数的创建和对函数的调用。如果您只编写一个常规函数而不调用它,那么函数中的代码将不会做任何事情。您是对的,我没有调用它。我真的不知道生命会立刻召唤自己。我会读更多关于它的内容,谢谢,我尝试在一个一级正常函数中使用相同的东西,但都没有定义。为什么它在生活中起着不同的作用?你能给我发一些关于生命的读物,让我了解它与普通函数的工作原理有什么不同吗?@Mozein它在生命中的工作原理没有什么不同。你调用正常函数了吗?IIFE涉及函数的创建和对函数的调用。如果您只编写一个常规函数而不调用它,那么函数中的代码将不会做任何事情。您是对的,我没有调用它。我真的不知道生命会立刻召唤自己。我会读更多的,谢谢