“重新定义函数参数”来自“JavaScript简洁”
"Redefining function parameters" from 'JavaScript Succinctly'
我正在简洁地阅读JavaScript(来自Syncfusion的免费电子书),其中有一节标题为"重新定义函数参数",我不太明白。想知道是否有人可以解释发生了什么。
var foo = false;
var bar = false;
var myFunction = function(foo, bar) {
arguments[0] = true;
bar = true;
console.log(arguments[0], bar);
}
myFunction();
我的印象是,函数参数,无论它们叫什么,都是本地范围的变量——即使参数名称也是全局范围变量的名称。因此,上面的代码,而不是"定义"函数参数,只是定义参数。因为,如果在调用函数后,如果您bar
登录到控制台,它会记录false
.所以,是的,我在这里有点困惑。是这本书错了,还是我对参数的名称和变量感到困惑?
我正在简洁地阅读JavaScript(来自Syncfusion的免费电子书)
请对你在那里读到的所有内容持保留态度。这本书讨论了 ECMAScript 3,它已经过时了。许多事情仍然是一样的(网络需要向后兼容),但有些已经改变了。
例如,在 ES5 严格模式下,使用 arguments
对象重新分配函数参数是不可能的。
我的印象是函数参数,无论它们叫什么,都是本地范围的变量
是的,这是真的。
即使参数名称也是全局范围的变量的名称。
是的,这称为阴影。为什么这些例子中有全局变量,我无法理解。
因此,上面的代码,而不是"重新定义"函数参数,只是定义参数
是的。参数确实定义了变量,并且正文中的赋值语句将它们重新分配(从undefined
到true
)。
将外部foo
定义为false
(此变量在此行之后永远不会触及)
var foo = false;
将外部bar
定义为false;
(此行之后永远不会触及此变量)
var bar = false;
定义myFunction
并为其指定一个函数作为值。
该函数定义内部foo
和内部bar
,它们在调用函数时获取值。
var myFunction = function(foo, bar) {
重新定义内在foo
的价值true
arguments[0] = true;
重新定义内在bar
的价值true
bar = true;
记录内foo
和内bar
的值
console.log(arguments[0], bar); }
调用不带参数的myFunction
,它将内部foo
和内部bar
定义为undefined
。
myFunction();
- 如何使用参数调用java脚本函数,其中参数来自字符串变量
- 角度调用父函数,其参数来自两个级别深的指令
- 有没有一种方法可以更改函数's来自另一个javascript函数的参数
- 使用来自 asp.net 的参数调用 Java 脚本函数
- 使用来自 URL 的参数生成联机 PDF
- 如何在 NodeJS 中传递响应参数,包括来自 POST http.request 的正文
- 对象属性来自方法参数时未定义
- 将参数传递给 JS.来自控制器的 ERB 文件?[轨道 3]
- “重新定义函数参数”来自“JavaScript简洁”
- 使用来自另一个函数的对象参数调用函数
- 使用来自 json 对象的参数动态调用方法/函数
- 来自 Javascript 的查询字符串参数不会用于处理 PHP 脚本
- 来自JavaScript的添加按钮,带有一个接受多个参数的onclick函数
- 带有来自 JavaScript 的参数的聚合物路由
- 来自 TypeScript 模块的 JavaScript IIFE 中的默认参数的目的是什么?
- 带有来自调用()的参数的JavaScript匿名函数
- Twilio:来自 Twilio.Device.connect() 的参数发送到哪里
- 如何访问“参数”来自闭包的外部函数的文字对象
- Meteor.js,Mongo:可以向用户插入新的文档或参数.来自客户端的配置文件
- jQuery自动完成小部件源代码-参数来自哪里