首页 > 解决方案 > 是否需要在 javascript 函数中指定参数?

问题描述

我开始学习javascript,这让我发疯。这是给我相同输出的不同代码。

在这个我没有在函数内部定义任何参数

var name = "Alex"
function hellow(){
  return "Hellow " + name
}
hellow();

在这里我确实定义了参数名称

var name = "Alex"
function hellow(name){
  return "Hellow " + name
}
hellow(name);

谁能向我解释为什么需要在函数内部定义参数?似乎如果您不定义它们,它仍然有效。

谢谢

标签: javascript

解决方案


似乎如果您不定义它们,它仍然有效。

仅当函数关闭您要使用的变量时。(你的第二个会。)通常不会。这是一个没有的例子:

function hellow(){
    return "Hellow " + theName;
}
function example() {
    var theName = "Alex"
    console.log(hellow());
}
example();

(我在theName那里使用而不是name因为name 在浏览器上调用了一个全局变量——它里面有窗口的名称。)

在该示例中,theName被声明为 within example,而hellow不是声明 within example,因此hellow不会关闭 over theName。在这种情况下(这是常见情况),要hellow获得 from 的值theName,您必须将其作为参数传递。

当一个函数关闭一个变量时,这称为闭包您可以在 Stack Overflow 上阅读更多关于闭包的信息,也可以在我贫血的小博客上的这篇旧文章 (术语稍有过时)中阅读。


推荐阅读