首页 >web前端 >js教程 >JavaScript 中的'(function () { }) ()”和'(function () { })()”在功能上相等吗?

JavaScript 中的'(function () { }) ()”和'(function () { })()”在功能上相等吗?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-10-30 08:53:02926浏览

Are

“(function () { }) ()”和“(function () { })()”在 JavaScript 中功能相等吗?

在 JavaScript 中,以下两个代码块似乎产生相同的结果:

(function () {
    bar = 'bar';
    alert('foo');
})();

alert(bar);
(function () {
    bar = 'bar';
    alert('foo');
}());

alert(bar);

两个代码块都显示消息“foo”,后跟“bar”。不过,这两种代码结构有功能上的区别吗?

回答

代码块是一样的

一般情况下,“(function ( ) { }) ()" 和 "(function () { })()" 在 JavaScript 中功能相同。它们都调用匿名函数并立即执行它。该函数初始化 bar 变量并警告消息“foo”。

与其他语法的差异

但是,当向代码中添加其他语法时,可能会出现差异。

情况 1:函数构造函数语法

考虑以下代码:

new (function () {
    this.prop = 4;
}) ().prop;

此代码创建函数类的新实例并检索新实例的 prop 属性。它返回值 4。

情况 2:命名空间语法

考虑以下代码:

new ( function() {
    return { Class: function() { } }; 
}() ).Class;

此代码调用 Class 属性上的 new 运算符。由于嵌套的括号,该函数被正常调用,其返回值用于创建一个新实例。

以上是JavaScript 中的'(function () { }) ()”和'(function () { })()”在功能上相等吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn