闲来无事发现javascript的两个问题,特此请教
if({}=={}){
    alert('真理永存');
}else{
    alert('真理何在');
}
为何{}!={}呢?
(function(){alert(1)})();
function(){alert(2)}();
为何第一句话能执行,第二句无法执行?
但是这样写,第二句又没问题
var a = {'a':function(){alert(2)}};
我的javascript没有很系统的学过,有些基础的东西不是太懂,特此请教。

解决方案 »

  1.   

    第二种是闭包函数的写法
    function(){alert(2)}();
    这一看就不对。。
      

  2.   

    {}=={} //值为false
    因为它俩是没有关系的两个对象
    (function(){alert(1)})();
    这是闭包写的法,你也可以写成:(function(){alert(1)}());
    第一个括号表示里面是一个函数表达式,js解析器在看到‘(function’时,他会认为这是一个函数表达式
    第二个括号是函数运算符。而下面这样写要报语法错误,js解析器在看到‘function’关键字时,他会认为这是一个函数定义,后面加‘()’时它无法识别
    function(){alert(2)}();
      

  3.   

    {}是两个对象,(function(arg){})(1),是闭包的写法