gpt4 book ai didi

javascript - 为什么这个 Node.js 回调会起作用?

转载 作者:行者123 更新时间:2023-12-03 09:38:28 25 4
gpt4 key购买 nike

我一直认为这些回调有自己的作用域。这是怎么回事?

Eton_file_sync.prototype.add_file_listener = function(filename){
//use chokidar to make a watcher for the filename
var watcher = this.chokidar.watch(filename, {
ignored: /[\/\\]\./,
persistent: true
});
var some_variable = 1;
watcher.on('change', function(path) {
console.log ('File', path, 'has been changed');
console.log (some_variable);
});
};

当通过更改文件调用它时,为什么 some_variable 的输出实际上有效?

File buffercont.asc has been changed
1

最佳答案

他们确实有自己的范围。如果您在事件处理程序回调中定义该变量的值,则您只能在该范围内定义该值,但不会影响父范围。

var some_variable = 1;
console.log(some_variable); // prints "1"
var callback = function() {
var some_variable = 5;
console.log (some_variable); // prints "5"
};
callback();
console.log(some_variable); // prints "1"

请注意,在上面的示例中,在函数内部定义变量并没有在函数外部更改它。每个函数都带有一个作用域链,与创建它的作用域链相同。您始终可以访问链中较高的变量,除非它们已被进一步覆盖,如上面的示例所示。

关于javascript - 为什么这个 Node.js 回调会起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31257875/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com