在 JavaScript 中,以下两个代码块似乎产生相同的结果:
(function () { bar = 'bar'; alert('foo'); })(); alert(bar);
(function () { bar = 'bar'; alert('foo'); }()); alert(bar);
两个代码块都显示消息“foo”,后跟“bar”。不过,这两种代码结构有功能上的区别吗?
代码块是一样的
一般情况下,“(function ( ) { }) ()" 和 "(function () { })()" 在 JavaScript 中功能相同。它们都调用匿名函数并立即执行它。该函数初始化 bar 变量并警告消息“foo”。
但是,当向代码中添加其他语法时,可能会出现差异。
考虑以下代码:
new (function () { this.prop = 4; }) ().prop;
此代码创建函数类的新实例并检索新实例的 prop 属性。它返回值 4。
考虑以下代码:
new ( function() { return { Class: function() { } }; }() ).Class;
此代码调用 Class 属性上的 new 运算符。由于嵌套的括号,该函数被正常调用,其返回值用于创建一个新实例。
以上是JavaScript 中的“(function () { }) ()”和“(function () { })()”在功能上相等吗?的详细内容。更多信息请关注PHP中文网其他相关文章!