相关疑难解决方法(0)

JavaScript中的(function(){})()构造是什么?

我曾经知道这意味着什么,但我现在正在努力...

这基本上是说document.onload吗?

(function () {

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

javascript iife

739
推荐指数
13
解决办法
27万
查看次数

执行JavaScript代码的尴尬方式

Flask应用程序中实施Google+登录的Google 教程中,我发现开发人员经常使用一种执行JavaScript代码的笨拙方式:

而不是做

var a = foo(bar);
Run Code Online (Sandbox Code Playgroud)

我看到了这个:

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

以奇怪的方式做到这一点的原因是什么?

javascript

91
推荐指数
2
解决办法
2049
查看次数

我想了解jQuery插件语法

jQuery站点列出了jQuery的基本插件语法,如下所示:

(function( $ ){    
  $.fn.myPlugin = function() {      
    // there's no need to do $(this) because
    // "this" is already a jquery object

    // $(this) would be the same as $($('#element'));

    this.fadeIn('normal', function(){    
      // the this keyword is a DOM element    
    });    
  };
})( jQuery );
Run Code Online (Sandbox Code Playgroud)

我只是想从Javascript的角度理解那里发生了什么,因为它看起来不像我之前看过JS所做的任何语法.所以这是我的问题列表:

  1. 如果用函数替换函数($)...,比如"the_function",语法如下所示:

     (the_function)( jQuery );
    
    Run Code Online (Sandbox Code Playgroud)

    什么是"(jQuery);" 在做什么?围绕the_function的括号是否真的有必要?他们为什么在那里?你能提供的另一段代码是否类似?

  2. 它以函数($)开头.所以它创建了一个函数,据我所知,它永远不会被运行,参数为$,已经定义了?那里发生了什么?

谢谢您的帮助!

javascript jquery jquery-plugins

89
推荐指数
2
解决办法
6495
查看次数

死亡竞赛:自我执行匿名功能-vs-"新功能"

在UPDATE 2/ANSWER中回答下面的内容

感谢Joseph帮助我找到答案(即使我不喜欢它=).

原始问题

虽然在JavaScript中使用Namepsaces时做的最佳做法的一些研究,我碰到这个定义中的"模型模式"的:http://yuiblog.com/blog/2007/06/12/module-pattern/.

自从我在YUI2年前看到它以来,我一直在使用这种模式,本文给出了概念的一个很好的概述.但它没有触及的是为什么"自我执行匿名函数"被用来代替"新函数".这在评论中被提出,但作者没有很好地描述.由于这篇文章已有4年多了(我在网上其他地方找不到答案),我想我会把它带到这里.

它已经关闭了,所以呢?(请参阅:为什么这个函数包含在括号中,后跟括号?它也没有回答我的问题=).

假设以下设置代码..

var MyNamespace = window.MyNamespace || {};
Run Code Online (Sandbox Code Playgroud)

哪个是首选,为什么?

MyNamespace.UsingNew = new function() {
    var fnPrivate = function() {
        return "secrets1";
    };

    this.property = "value1";
    this.method = function() {
        return "property = " + this.property + ' ' + fnPrivate();
    }
};

MyNamespace.UsingSelfEx = (function() { //# <- Added "pre-parens" suggested by chuckj
    var fnPrivate = function() {
        return "secrets2";
    };
    var fnReturn = {};

    fnReturn.property = "value2";
    fnReturn.method = …
Run Code Online (Sandbox Code Playgroud)

javascript

20
推荐指数
1
解决办法
5291
查看次数

如果对象包装在匿名函数中,如何在JavaScript中允许多个实例

正如crockford和john resig所主张的那样,应该将对象包装在匿名函数中。但是,如果需要多个实例怎么办?包装后,将仅存在一个实例(单例)。

更新:我忘了说我当然是在谈论框架的根对象(不是jquery,而是我自己的)而不是任何对象。由于它是一个框架,因此实例的数量是未知的,无法由客户端决定。

我猜有99.99%的人只是使用框架而没有建立自己的框架,因此,如果您不知道不要尝试回答某些问题,您可能会不理解自己:)

javascript

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

为什么函数用括号括起来?

题:

为什么函数包含在括号中?我从括号中取出了这个代码,它没有任何问题.

在(function(){... Code Here ...})()中使用代码有什么好处?喜欢它在下面的例子中?

码:

(function() {
    "use strict";
    // Doesn't work because strict mode 
    // enforces the fact that the second example shouldn't work
    if (true) {
        function fn1() {
            // This won't run
            console.log("doesn't work -- have a great Die Hard Day XIII");
        };
        fn1();
    }
})();
Run Code Online (Sandbox Code Playgroud)

代码在这里:将JQuery单词作为参数发送给该命名空间的是什么.我知道函数包含在(...)中的原因是创建一个命名空间.我想一个更好的问题是为什么一个人会传入一个变量,但我想这将是另一个命名空间需要变量的情况.

( function( $ ) {
    // Init Skrollr
    var s = skrollr.init({
        render: function(data) {
            //Debugging - Log the current scroll position.
            //console.log(data.curTop);
        }
    });
} )( jQuery …
Run Code Online (Sandbox Code Playgroud)

javascript

0
推荐指数
1
解决办法
76
查看次数

标签 统计

javascript ×6

iife ×1

jquery ×1

jquery-plugins ×1