JavaScript 中匿名函数(或任何它)的目的/好处是什么?
What is the purpose/benefit of anonymous functions (or whatever this is) in JavaScript?
在过去的几周里,我看到很多应用程序在脚本的开头都有这种脚本:
(function() {
// Code goes here...
});
任何人都可以解释这一点或链接到一些有关此的资源吗?
"use strict"
用于确保声明所有变量。例如,我可以没有错误:
x = 3;
虽然没有声明,但我不能做:
"use strict";
x = 3;
不会引发错误。我必须使用:
"use strict";
var x = 3;
"use strict"
可用于function
。例如:
x = 3; // no error
myFunc();
function myFunc() {
"use strict";
y = 3; // error
}
编辑
在use strict
模式下,您也无法delete
变量。
匿名函数是动态声明的函数 运行。它们被称为匿名函数,因为它们没有被赋予 与正常函数相同的名称。
匿名函数改为使用函数运算符声明 的函数声明。您可以使用函数运算符来 在放置表达式的有效位置创建一个新函数。为 示例,您可以将新函数声明为函数的参数 调用 or 以分配另一个对象的属性。
这是文章。
实际上,这可能是这样的:
(function() {
"use strict"
var x = 1;
document.write("I am inside the function scope and x=", x, "<br/>");
}())
if (typeof(x) === "undefined") {
document.write("I am outside the function scope and x=undefined");
}
该函数创建一个作用域,可用于防止在全局作用域上设置变量等。 "使用严格"有助于保持代码干净,并抛出可能导致错误的常见错误(例如重新声明同名变量)。 请注意,在上面的代码中,var x 是在函数作用域内设置的。 在函数范围之外,它是未定义的。 如果您将这两件事加载到不同的.js文件中并且来自不同的作者,它们各自可以使用自己的"var x",并且它们不会冲突,因为它们位于不同的范围内,而不是在全局范围内设置。
至于"使用严格"模式以及它具体防止什么,您可以在此处的文档中查看更多详细信息:MDN"使用严格"文档
作为参考,此代码开头的函数被视为 IIFE(立即调用的函数表达式)。
相关文章:
- 什么'它的意思是当一个变量位于括号外时
- 将任何CDN配置为只传递一个文件,无论请求的url是什么
- 使用Angular存储用户以前是否选中过复选框,然后再调用它的最佳方式是什么
- InDesign CS5 / Extendscript -- exportFile 的参数是什么,它的相关属性是什么
- 包装库的各个部分的代码结构是什么,它的用途是什么
- requestAnimationFrame的目的是什么?它对重绘时间没有任何影响
- JQuery/Javascript - valueCommit 事件到底是什么,它在什么时候被调用
- JavaScript 中匿名函数(或任何它)的目的/好处是什么?
- 这个奇怪的作业速记是什么?为什么它有效
- sequelize client.uuid,它是什么,它有什么效果
- 我想使删除按钮在这个javascript程序中起作用.函数的语法是什么,它去哪里?仅.js
- 当一个实时网站在文件系统中工作时,是什么导致它无法工作
- 不管“if([])”是什么,它似乎不是假的
- AngularJS是如何做它的工作的(是什么让它打勾的)
- 在jquery中冒号是什么意思?它像一个else语句吗?
- .params到底是什么,它做什么
- 事件是什么以及它用于什么
- 学习骨干.js的最佳方法是什么?任何其他选择
- 网站真的很慢,不知道是什么让它慢下来的
- 这个JavaScript表达式的结构是什么?为什么它的求值为'true'?(HTML5音频标签和canP