相关疑难解决方法(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万
查看次数

这种做法在JavaScript中被称为什么?

当您将JavaScript代码包装在这样的函数中时:

(function(){

  var field = ...;
  function doSomthing(){...
  ...


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

我注意到这在很多网页上为我修复了范围问题.这种做法叫做什么?

javascript design-patterns terminology

57
推荐指数
5
解决办法
4057
查看次数

在Javascript onClick事件中传递参数

我正在尝试在onclick事件中传递一个参数.以下是示例代码:

<div id="div"></div>

<script language="javascript" type="text/javascript">
   var div = document.getElementById('div');

   for (var i = 0; i < 10; i++) {
       var link = document.createElement('a');
       link.setAttribute('href', '#');
       link.innerHTML = i + '';
       link.onclick=  function() { onClickLink(i+'');};
       div.appendChild(link);
       div.appendChild(document.createElement('BR'));
       }

   function onClickLink(text) {
       alert('Link ' + text + ' clicked');
       return false;
       }
    </script>
Run Code Online (Sandbox Code Playgroud)

但是,每当我点击任何链接时,警报总会显示"Link 10 clicked"!

谁能告诉我我做错了什么?

谢谢

javascript closures

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

(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万
查看次数

Grunt编译Jade文件

我正在尝试配置我的Gruntfile以将我的所有Jade文件编译为单独的HTML文件.例如,如果我有以下源文件夹:

source
??? templates
    ??? first.jade
    ??? second.jade
    ??? third.jade
Run Code Online (Sandbox Code Playgroud)

然后我希望grunt jade输出:

build
??? templates
    ??? first.html
    ??? second.html
    ??? third.html
Run Code Online (Sandbox Code Playgroud)

这是我的Gruntfile使用grunt-contrib-jade:

module.exports = function(grunt) {
    grunt.initConfig({

        jade: {
            compile: {
                options: {
                    client: false,
                    pretty: true
                },
                files: [ {
                  src: "*.jade",
                  dest: "build/templates/",
                  ext: "html",
                  cwd: "source/templates/"
                } ]
            }
        },
    });

    grunt.loadNpmTasks("grunt-contrib-jade");
};
Run Code Online (Sandbox Code Playgroud)

但是,当我运行jade命令时,我收到以下错误:

Running "jade:compile" (jade) task
>> Source file "first.jade" not found.
>> Source file "second.jade" not found.
>> Source file …
Run Code Online (Sandbox Code Playgroud)

javascript node.js gruntjs

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

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

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

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

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

javascript

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

如何使Javascript代码黑客/注入/操作变得困难?

有没有办法防止或使其难以让某人注入Javascript并操纵变量或访问函数?我的想法是在每次重新加载时随机更改所有var名称,以便每次都需要重写恶意软件脚本?还是有其他不那么痛苦的方法?

我知道最终有人会破解他的方式,但我想知道如何使重现行动变得困难,以便人们不会发布书签或类似的东西供所有人使用.我不在乎专家是否在代码中找到了自己的方式,但我希望它比它复杂一点javascript:d=0;

如果你知道如何使黑客攻击Javascript更困难,请写下这些.

javascript browser security code-injection malware

7
推荐指数
2
解决办法
3638
查看次数

变量范围:this.remove不是函数

this.remove()不是函数.怎么会?

var vehicle = function () {
    return {
        init: function () {
            jQuery('.vehicle-year-profile .options .delete').bind('click', function (e) {
                e.preventDefault();
                this.remove();
            });
        },
        remove: function () {
            alert('test');
        }
    }
}();

jQuery().ready(vehicle.init);
Run Code Online (Sandbox Code Playgroud)

对困惑感到抱歉.我正在尝试调用自己的"删除"功能.这只是一个管理我页面上的车辆的类.这是它的开始,它将具有比init/remove更多的功能.

javascript jquery

5
推荐指数
2
解决办法
5847
查看次数

简单的JavaScript函数与立即调用不起作用...为什么?

任何人都可以解释为什么这样有效:

var sayHello = function (name) {
   alert("Hello there " + name + "!");
}("Mike");
Run Code Online (Sandbox Code Playgroud)

虽然这不是:

function sayHello (name) {
   alert("Hello there " + name + "!");
}("Mike");
Run Code Online (Sandbox Code Playgroud)

迈克皮特

javascript function invocation

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

Google分析跟踪代码使用的技术是什么?

Google Analytics跟踪代码如下所示:

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

他们使用这些括号的技术是什么(stuff)()- 被称为?它有什么作用?

我将Google Analytics代码放在我页面上的结束标记之前,然后像这样放置一个if语句(我进一步包含了一个Jquery cookie插件):

<script type="application/javascript">
if ($.cookie('allowcookies') == 'yes') {
analytics code
}
</script>
Run Code Online (Sandbox Code Playgroud)

直到我在代码中使用相同的技术,它才运行:

(function() {if ($.cookie('allowcookies') == 'yes') {

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

为什么在我这样做之前没有运行?它为什么要追赶?

javascript google-analytics

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

使用$(document).ready时为什么必须使用匿名函数?

我一直在使用文档准备,但我正在观看一些教程视频真的知道最新情况,而不仅仅是通过输入这么多知道.

我总是把它放在一个习惯的匿名函数中,因为它总是如此完成,但现在我看到它是否在匿名函数中(alert();例如),它会在DOM加载时执行NOT但是当javascript时立即执行NOT负载.它必须在一个匿名函数中才能实现它应该如何(当整个页面加载时)和事件监听器触发它的'ready'.

为什么是这样?

此外,我经常看到类似函数(i){}(i)的东西,这是什么意思?

javascript jquery

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