相关疑难解决方法(0)

用于自动执行匿名JavaScript函数的括号的位置?

我最近将当前版本的json2.js与我在项目中的版本进行了比较,并注意到函数表达式的创建和自我执行方式有所不同.

用于在括号中包装匿名函数然后执行它的代码,

(function () {
  // code here
})();
Run Code Online (Sandbox Code Playgroud)

但现在它将自动执行的函数包含在括号中.

(function () {
  // code here
}());
Run Code Online (Sandbox Code Playgroud)

有通过CMS在接受答案的注释解释JavaScript的封装匿名函数的语法是"既:(function(){})();(function(){}());有效."

我想知道有什么区别?前者是否通过绕过全局匿名函数来占用内存?括号应该放在哪里?

javascript syntax anonymous-function iife

105
推荐指数
3
解决办法
1万
查看次数

(function(){})()之间的区别; 和function(){}();

可能重复:
"(function(){})()"和"(function(){}())"在JavaScript中功能相同吗?

这是我还没有想到的东西,但是我一直在使用function(){}(),因为我添加了括号后我的VIM语法突出显示,虽然我已经看过(function(){}) ()很多次,也许它是一个IE的东西?

编辑:

var singleton = function() {
    // code
}();

var singleton = (function() {
    // code
})();
Run Code Online (Sandbox Code Playgroud)

javascript syntax

36
推荐指数
2
解决办法
2万
查看次数

为什么括号用于包装javascript函数调用?

这两个javascript函数调用有什么区别?

(function(){alert("foo")})()
Run Code Online (Sandbox Code Playgroud)

与此相对:

(function(){alert("foo")}()) 
Run Code Online (Sandbox Code Playgroud)

javascript

29
推荐指数
2
解决办法
1万
查看次数

(function(){...}())之间有区别吗?和(function(){...})();?

可能重复:
自动执行匿名JavaScript函数的括号位置?

有时我看到:

(function() { ... }()); 
Run Code Online (Sandbox Code Playgroud)

有时我看到:

(function() { ... })(); 
Run Code Online (Sandbox Code Playgroud)

我看到有和没有参数的两种形式.它们 执行匿名功能.

这两种形式有区别吗?是否有任何令人信服的理由使用一种形式而不是另一种形式?

javascript anonymous-function

22
推荐指数
2
解决办法
3877
查看次数

(func(){}())之间的差异; vs(func(){})();

我经常看到两种惯例,我想知道是否存在实际差异.

(function () {
  document.write("it works");
}());

(function () {
  document.write("it also works");
})();
Run Code Online (Sandbox Code Playgroud)

javascript

11
推荐指数
1
解决办法
222
查看次数

这三种形式的自我调用匿名函数有什么区别?

可能重复:
"(function(){})()"和"(function(){}())"在JavaScript中功能相同吗?

我正在阅读下面的文件.

http://addyosmani.com/resources/essentialjsdesignpatterns/book/#patternity

当我查看这些示例时,自动调用匿名函数有三种形式.

一个是

(function() {
    //do something
})();
Run Code Online (Sandbox Code Playgroud)

而另一个是

function() {
    //do something
}();
Run Code Online (Sandbox Code Playgroud)

而另一个是

(function() {
    //do something
}());
Run Code Online (Sandbox Code Playgroud)

这三种形式有什么区别?

谢谢你的阅读!

javascript function self-invoking-function

9
推荐指数
1
解决办法
116
查看次数

这些自执行匿名函数(又名IIFE)实现之间有什么区别

在许多书籍/ 博客文章中,自调用匿名函数模式的方式如下:

(function() {
  var foo = 'bar';
})();
Run Code Online (Sandbox Code Playgroud)

但是,在此上运行JSLint会出现此错误:

将调用移动到包含该函数的parens中.

例如将其改为此作品:

(function() {
  var foo = 'bar';
}());
Run Code Online (Sandbox Code Playgroud)

问题

  1. 为什么第一个实现对JSLint来说不够好?有什么区别?
  2. 什么是首选形式?JSLint总是对的吗?
  3. 它为什么有效?毕竟function(){}()抛出一个SyntaxError: Unexpected token (
    但用parens包裹它会让它突然间起作用吗?eg (function(){}()) - 工作正常
    (毕竟这是JavaScript,而不是Lisp,所以包装parens对ohterwise语法错误的影响是什么?)

编辑:这是对此的一些后续(虽然我不会说完全重复):JSLint错误:"将调用移动到包含该函数的parens",所以我的主要问题是#3,为什么它完全有效?

javascript

9
推荐指数
1
解决办法
610
查看次数

代码开头的JavaScript分号:仍然是一个很好的做法?

我被告知,总是在JavaScript代码的开头插入分号是一个好习惯,如下所示:

;(function(){

})();
Run Code Online (Sandbox Code Playgroud)

但是,许多流行的JavaScript库/框架都不使用它,例如jQuery,Backbone等.

我相信开头的分号应该可以防止坏代码破坏缩小/压缩的代码等等.但是,为什么没有人再使用它了?

开头的分号是否由于某种原因变得无用?

javascript minify

8
推荐指数
2
解决办法
628
查看次数

new(Date)和new Date()之间有什么区别?

在javascript中,新建对象的典型方法是这样做:new Date().但你也可以这样做:new (Date).采用后一种方式有什么区别和优势?

javascript constructor

7
推荐指数
1
解决办法
200
查看次数

应如何格式化闭包?

我通过JSLint运行了一个脚本,它选择了一个带括号放置的特定问题.

我写过:

(function(){})();
Run Code Online (Sandbox Code Playgroud)

有人建议使用:

(function(){}());
Run Code Online (Sandbox Code Playgroud)

我很好奇这个特定的变化修复了什么错误或问题.我认为,因为JSLint选择了它作为一个问题,所以必须有人的问题.

扩展形式:

(
  function (p) {
    ...code...
  }
)(param); //parameters after the parens
Run Code Online (Sandbox Code Playgroud)

航班吗

(
  function (p) {
    ...code...
  }(param) //parameters within the parens
);
Run Code Online (Sandbox Code Playgroud)

javascript closures

6
推荐指数
1
解决办法
116
查看次数