gpt4 book ai didi

javascript - JavaScript 示例中的全局与本地

转载 作者:行者123 更新时间:2023-11-30 17:02:30 24 4
gpt4 key购买 nike

我正在尝试学习 JavaScript 的基础知识,但遇到了一些我并非完全 100% 了解的事情。这是没有在函数内声明 my_number 变量的代码:

var my_number = 7; // this has global scope

var timesTwo = function(number) {
my_number = number * 2;
console.log("Inside the function my_number is: ");
console.log(my_number);
};

timesTwo(6);

console.log("Outside the function my_number is: ")
console.log(my_number);

这输出到:在函数 my_number 中是:12在函数 my_number 之外是:12

首先,根据我的阅读,如果您不在函数内声明您的变量,它将采用同名全局变量的值。我对这里发生的事情的猜测是,当函数调用传递数字 6 时,它将它传递给函数,进行乘法并将结果 (12) 记录到控制台。函数结束后,它会保留该值 12(基本上覆盖全局值?)并再次将数字 12 记录到控制台。

另一方面,当我在函数中声明变量时,var my_number = number * 2; 它像我期望的那样工作并打印出 12在函数内部并为最后一行代码使用全局变量 7

   var my_number = 7; // this has global scope

var timesTwo = function(number) {
var my_number = number * 2;
console.log("Inside the function my_number is: ");
console.log(my_number);
};

timesTwo(6);

console.log("Outside the function my_number is: ")
console.log(my_number);

在函数 my_number 中是:12

在函数 my_number 之外是:7

我的理解是否正确? 特别是第一段代码。我想在继续之前完全掌握这个概念,这对我来说似乎很重要。

最佳答案

你的理解似乎没问题,但我不确定以下声明:

Once the function has ended it keeps that value 12 (essentially overwrites the global value?)

这与函数结束无关。由于函数中没有具有该名称的局部变量,my_number 的每次出现都直接引用全局变量,该变量在赋值中写入并在日志语句中读取。 timesTwo 函数没有自己的变量副本。

关于javascript - JavaScript 示例中的全局与本地,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28592961/

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