先上代码再说话。<script>
var cb = document.getElementsByName("checkbox");
for(var i=0;i<cb.length;i++)
{
var c = cb[i];
!function(c)
{
c.onclick = function ()
{
}
}(c)
}
</script>真的好不懂啊。function前面干吗要感叹号?
后面跟个(c)是啥意思?
里面怎么还有一个onclick时间函数?
坐等啊……

解决方案 »

  1.   


    这我之前解答过,就是个匿名函数~·+function(){}()
    -function(){}()还能像上面这么写~·里面的c就是var c = cb[i];当前对象啊,传入function函数~·
      

  2.   

    作用好象是给每个checkbox附加click单击事件。!应该是立刻运行生效的意思,具体我也忘记了。好久没写JS了。路过。顶!
      

  3.   

    这个写法跟闭包写法一样的
    (function(){})()
      

  4.   


    。1楼说错了!function(){}()这样也是闭包~·
      

  5.   

    自运行函数而已, 前面加~ ! 之类的运算符都可以使后面的匿名函数立刻运行, 还有个 void
      

  6.   

    有很多方法立即执行匿名函数,简单的整理就有下面三种的典型方式(还有其他方式的,欢迎告知):方式一(function() {
        // …
    })();方式二void function() {
      // …
    }();方式三~function() {
       // …
    }();方式一 和 方式二 大家可能都看到过,这里主要说明下 方式三。在说明 方式三 之前,我们现回顾下运算符“~”(位取反)在 EMCAScript 中的定义(第五版的第 72 页),简单的翻译下:1. 按运算符结合语句2. 将旧值转换为 32 位整型3. 执行运算符后的语句4. 转换之行结果为 32 位整形并返回从上面可以了解,其实位运算符都能立即返回后面表达式的值。其实其他位运算符都可以达到这样的目的,例如:!function() {
        // …
    }();等都可以达到我们的目的。所以其实用“~”也并无其他的原因,仅仅是代码“看着好看”而已 :^)
    * 方式一的写法很常见而且很保险,所以并不会有人因为你使用这种方式而责怪你* 但使用方式一的同学,可能经常会犯忘记匹配括号的“毛病”(特别是语句块很长时,就经常搞错)* 使用位运算符执行匿名函数很新潮,用来装逼酷不错* 很多 IDE (如 IDEA)以及语法高亮工具不支持 方式三 的写法* void 效率最好,但总感觉相比其他两种实现方式非常的臃肿(仅仅多几个字符?)* 综合代码量以及效率等情况考虑,用 方式一 没错的* 在需要额外节省代码的极端情况,用 方式三* 考虑效率优先,那么使用 方式二
      

  7.   

    其实就是一匿名函数吧,给一组变量添加click事件处理函数
    格式类似:function(){}()