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

标签 javascript

我正在尝试学习 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/

相关文章:

javascript - 为什么我在 jquery ui 中的项目在我删除它时没有更新

javascript - 阻止 Opera Mobile 概述触摸的元素

javascript - Tinymce 剥离 Facebook 标签

javascript - 将参数传递给 Web 组件以在类中使用失败

javascript - 如何在 Angular 2/4 中将当前日期转换为时间戳

javascript - 将函数添加到 $ (jQuery)

javascript - AngularJs : How to get ng-repeat input/checkbox values on form submit?

JavaScript 附加元素文本不显示

javascript - 在 expo Document-picker 上使用 URI 来获取文件本身

javascript - window.open 在 IE 中抛出无效参数错误