我想问下,
什么情况下this不存在,要用到(1, eval)('this');

解决方案 »

  1.   

    在非ie浏览器下,用这个方法可以直接访问全局变量var t = 1;
    function ty()
    {
    var t = 2;
    alert((1, eval)('t'));//在非ie浏览器下会输出 1,ie浏览器下会输出 2
    }
    ty();
      

  2.   

    能不能先回答我问的javascript语法问题?
      

  3.   

    var global = (function() {
      return this || (1, eval)('this');
    }());
    function() {
      return this || (1, eval)('this');
    }后面的小括号是什么意思?最外面的小括号是什么意思?
      

  4.   

    详细研究过Javascript代码库(如Jquery、YUI)的人,一定会看到过很多如下形式的函数:  (function(){...}())或 (function(){})()       对于很多初学者来说,遇到它们经常会产生一系列问号:这是编程吗,用它做什么,怎么我没在其他语言里见过呢?     接下来我就详细地解释一下:     它可以解释成为“匿名函数自调用”,也就是说,定义一个匿名函数,然后马上调用它(因为它是匿名的,如果不立即调用就获取不到该函数的引用了)。通常它被应用在一些大型的JS框架中(如上面所说的),因为这个匿名函数的函数体相当于提供一个匿名的名字空间,这样就不会再与用户自定义的JS函数、变量、对象发生冲突了。尽管JS没有显示地提供命名空间的定义和使用机制,但这种匿名方式却不失为是一种很好的解决命名空间问题的方法。     所以说,(function(){代码})()就等于执行了一个函数,只不过它是匿名的而已。
    http://blog.csdn.net/zp324/article/details/7479038
      

  5.   

    这样看清不清楚
    function A(){
    return this;
    }
    var $a = A;
    var global = ($a)();
      

  6.   

    var B=A
    var global=A();
    var global=($a)();
    var global=(B());
    这三种都是一样的?
      

  7.   

    是一样,不过匿名函数,必须要用()或其他符号,来确定他是一块整体的东西。才能运行。你那代码就是运行一个匿名函数,来确定this是谁。
      

  8.   


    是确保返回的一定是全局对象window吧?继而可以通过global来访问各种全局变量