javascript - 是否需要在 javascript 函数中指定参数?
问题描述
我开始学习javascript,这让我发疯。这是给我相同输出的不同代码。
在这个我没有在函数内部定义任何参数
var name = "Alex"
function hellow(){
return "Hellow " + name
}
hellow();
在这里我确实定义了参数名称
var name = "Alex"
function hellow(name){
return "Hellow " + name
}
hellow(name);
谁能向我解释为什么需要在函数内部定义参数?似乎如果您不定义它们,它仍然有效。
谢谢
解决方案
似乎如果您不定义它们,它仍然有效。
仅当函数关闭您要使用的变量时。(你的第二个会。)通常不会。这是一个没有的例子:
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 上阅读更多关于闭包的信息,也可以在我贫血的小博客上的这篇旧文章 (术语稍有过时)中阅读。
推荐阅读
- ffmpeg - 如何将所有音轨转换为 eac3 并保留所有字幕?
- nginx - nginx如何proxy_pass所有请求期望一个目录?
- python - 在python中设置可变数量的输入节点
- assembly - AVR 汇编算术 - 如何查看输出
- java - 增强的for循环,如果匹配则如何返回结果,如果不匹配则打印未找到
- javascript - 我想在组件渲染“if else”语句中的“else”之前更新状态
- python - Python中的实时信号处理
- python - 检测图像中的圆线段
- amazon-web-services - 根据 S3 GetObject 和 DeleteObject 请求的速率限制触发警报
- node.js - 如何在 Node.js 中使用 MongoDB 更改流来填充新集合