首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >仅仅声明变量的用途是什么?

仅仅声明变量的用途是什么?
EN

Stack Overflow用户
提问于 2017-01-14 22:02:01
回答 3查看 151关注 0票数 4

我使用python已经有一段时间了,并且刚刚开始学习javascript。在javascript中,正如我所理解的那样,您可以声明一个变量而不给它赋值(var cheesevar cheese = 4相比),在什么情况下您想声明一个变量,而不是马上给它赋值呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-01-14 22:07:49

考虑一下这个片段。

代码语言:javascript
复制
if (someCondition) {
    var x = 5;
} else if (someOtherCondition) {
    var x = 4;
}

if (x) {
    doFunc();
}

由于x需要存在才能运行doFunc,因此只需添加上面未定义的声明即可。var x;,这样if (x)就不会返回错误。

票数 0
EN

Stack Overflow用户

发布于 2017-01-14 22:27:31

当您希望变量的值是undefined时,就会这样做。

代码语言:javascript
复制
var cheese;
console.log(cheese); // undefined

它比

代码语言:javascript
复制
var cheese = undefined;

undefined值似乎不太有用,但这将允许稍后分配一些其他值。

票数 0
EN

Stack Overflow用户

发布于 2017-01-14 23:52:32

var cheese;可以非常有用(即使您从未为它分配任何东西)。当然,输入var cheese = undefined;是一种更短的方法,但这并不是…的唯一原因

使用var声明一个局部变量,这有一个很好的属性:它向父作用域隐藏变量。

你的问题还有另一部分:

如果我们无论如何都要给var cheese分配一个值:为什么不立即给分配呢?

答:您的算法可以返回cheese,而无需为其分配任何内容--即"undefined是有效的“。

下面是一个示例,说明var如何向父作用域隐藏变量:

代码语言:javascript
复制
var a = 3;
console.log(a); // prints 3; "a" is defined in this scope

function findEvenNumber(numbers) {
    var a; // we declare this local variable, to ensure that we do _not_ refer to the variable that exists in the parent scope
    numbers.forEach(function(number) {
        if (number % 2 === 0) {
            a = number;
        }
    });
    return a; // if no even number was found, it returns undefined (because we never assigned anything to a)
}
findEvenNumber([1, 2]); // returns 2;

console.log(a); // prints 3; the "a" in this scope did not get overwritten by the function

推测:可能var cheese;语法存在于ECMA中,以使程序员能够在函数开始时声明所有变量。这样一项公约是由C89 compiler执行的,有些人开始喜欢它。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41655445

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档