相关疑难解决方法(0)

如何在JavaScript中声明命名空间?

如何在JavaScript中创建命名空间,以便我的对象和函数不会被其他同名的对象和函数覆盖?我用过以下内容:

if (Foo == null || typeof(Foo) != "object") { var Foo = new Object();}
Run Code Online (Sandbox Code Playgroud)

这样做有更优雅或简洁的方式吗?

javascript namespaces javascript-namespaces

973
推荐指数
19
解决办法
53万
查看次数

围绕对象/函数/类声明的括号是什么意思?

我是JavaScript和YUI的新手.在YUI库示例中,您可以找到此构造的许多用法:

(function() {
    var Dom = YAHOO.util.Dom,
    Event = YAHOO.util.Event,
    layout = null,
        ...
})();
Run Code Online (Sandbox Code Playgroud)

我认为最后几个括号是在声明之后执行该函数.

...但是围绕函数声明的前一组括号怎么样?

我认为这是一个范围问题; 这是将内部变量隐藏到外部函数和可能的全局对象中.是吗?更一般地说,这些括号的机制是什么?

javascript syntax

286
推荐指数
6
解决办法
11万
查看次数

JavaScript匿名函数立即调用/执行(表达式与声明)

可能的重复:
JavaScript中的函数表达式与声明之间有什么区别?
解释JavaScript封装的匿名函数语法

为什么这个:

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

还有这个:

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

工作,而这:

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

才不是?它看起来完全一样 - 定义了匿名函数,并立即调用.有人可以从JavaScript/ECMAScript标准中引用它来解释这个吗?

更新:感谢大家的答案!所以这是关于函数表达式与函数声明的关系.请参阅此Stack Overflow答案,ECMAScript标准第13节,以及这篇精彩文章:命名函数表达式揭秘.

回顾一下答案:

  1. 第一个片段被解释为表达式,因为应用了分组运算符()- 请参阅ECMAScript标准第11.1.6节.

  2. 在第二个片段中,函数被解释为表达式,因为它位于赋值运算符的右侧部分=.

  3. 第三个片段没有任何允许解释器将函数作为表达式读取的东西,因此它被认为是一个声明,如果没有标识符则无效(Gecko允许它通过,但它会跟随下面的()分组操作符(因为它认为) )什么都不适用).

javascript anonymous-function

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

Javascript函数定义语法

可能重复:
JavaScript:var functionName = function(){} vs function functionName(){}
在JavaScript中声明函数

我已经看到了两种不同的语法来定义javascript中的函数:

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

以及

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

这些有什么区别?其中一个被弃用了吗?

javascript syntax function

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

JavaScript无限循环?

如何在JavaScript中创建无限循环?我正在尝试制作幻灯片,我已经开始工作了,但我无法让它循环播放.我甚至无法让它循环两次.

我现在使用的代码是

window.onload = function start() {
    slide();
}
function slide() {
    var num = 0;
    for (num=0;num<=10;num++) {
        setTimeout("document.getElementById('container').style.marginLeft='-600px'",3000);
        setTimeout("document.getElementById('container').style.marginLeft='-1200px'",6000);
        setTimeout("document.getElementById('container').style.marginLeft='-1800px'",9000);
        setTimeout("document.getElementById('container').style.marginLeft='0px'",12000);
    }
}
Run Code Online (Sandbox Code Playgroud)

没有那里的东西,它确实经历了一次.当我输入一个for时,它要么让Firefox锁定,要么只循环一次.我确信这是一件非常简单的事情,即使它必须循环1,000,000次而不是无限次,这对我来说还算合适.

另外,我不想使用jQuery或其他人创建的东西.我正在学习JavaScript,这部分是为了帮助我学习,部分是因为我正在努力制作尽可能多的基于HTML5的系统.

编辑:我认为它冻结的原因是因为它一次执行代码,然后只是将它存储在缓存或其他东西.我想要它做的就是经历一次,然后再次从顶部开始,这是我一直认为循环的地方.在"批处理"(命令提示符)脚本中,可以使用" GOTO"命令完成.我不知道JS中是否有相同的东西,但这确实是我的目标.

javascript loops

39
推荐指数
3
解决办法
12万
查看次数

Javascript中没有名称的函数与名称和函数之间的区别

1.

function abc(){
    alert("named function");
}
Run Code Online (Sandbox Code Playgroud)

V/S

2.

function(){
    alert("Un-Named function");
}
Run Code Online (Sandbox Code Playgroud)

请从初学者的角度来解释一下.

javascript anonymous-function

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

解释以下JavaScript声明?

var ninja = (function(){
    function Ninja(){};
    return new Ninja();
})();
Run Code Online (Sandbox Code Playgroud)

为什么上面的函数封装在括号中,为什么();最后有?

我认为这是一个构造函数,因为();最后,但为什么对象包含在括号中?

javascript

28
推荐指数
2
解决办法
1279
查看次数

知道JavaScript函数表达式与函数声明,但这是什么?命名函数表达式?

可能重复:
JavaScript:var functionName = function(){} vs function functionName(){}
Javascript中的函数表达式与声明有什么区别?

我知道函数声明和表达式之间的区别,但是遇到了涉及函数名称的代码,并且想要了解运行它时会发生什么:

var abc = function def() {
    console.log("Wait! What??");
}
Run Code Online (Sandbox Code Playgroud)

我知道这不是JavaScript的一种方式,但只是想知道一些事情:

  1. 怎么了abc?为什么会这样?abc可以叫但不是def,为什么?
  2. 它是函数声明还是表达式?
  3. defundefined- 为什么?如果它应该是,是否有内存泄漏?
  4. 为什么abc.prototype功能def

谢谢

javascript oop

23
推荐指数
2
解决办法
1453
查看次数

为什么有些js文件以(function(){开头

简单,为什么一些js文件(如Ember或JQuery.js)开头(function() {...})();

javascript function

14
推荐指数
2
解决办法
7091
查看次数

jQuery和$问题

我正在修改一些有很多jQuery的代码,但我不确定某些jQuery语句在做什么.

在jQuery代码的顶部有

jQuery.noConflict
Run Code Online (Sandbox Code Playgroud)

*1.我明白那个.但是有一些代码有:

<script type="text/javascript">
(function($) {

$(document).ready(function() {

    jQuery.fn.fixEmail = function() {
    {
   return $(this).each(function() {
       var $s = $(this);                  
           ...code...
        }
}
</script>
Run Code Online (Sandbox Code Playgroud)

我得到jQuery被使用因为noConflict.什么是参数$?

*2.在另一个功能中,他们使用

<script type="text/javascript">
jQuery(function(){
    var $ = jQuery;
    var cc = {
        mode : 'teaser',
        featureVisible : true,
        $loader : '<p class="loadingAnimation"><img height="32" src="' +
                config.xoImgUrl +
                '/images/ajax-loader.gif" width="32" /></p>',
                ....more code...
            }
}
</script>
Run Code Online (Sandbox Code Playgroud)

所以他们从noConflict设置$ jQuery.但为什么?他们刚刚使用过jQuery吗?

*3.我想要使​​用的插件由以下内容初始化:

   var $j = jQuery.noConflict();
    var $ = {};
    $j(document).ready(function(){
        $j.history.init(pageload);
        $j("a[@rel='history']").click(function(){
            ...more code...
        });
    }); …
Run Code Online (Sandbox Code Playgroud)

jquery

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