日期:2014-05-16  浏览次数:20370 次

无聊发个问题,希望有人能解答
闲来无事发现javascript的两个问题,特此请教

JScript code

if({}=={}){
    alert('真理永存');
}else{
    alert('真理何在');
}



为何{}!={}呢?

JScript code

(function(){alert(1)})();
function(){alert(2)}();



为何第一句话能执行,第二句无法执行?
但是这样写,第二句又没问题
var a = {'a':function(){alert(2)}};


我的javascript没有很系统的学过,有些基础的东西不是太懂,特此请教。

------解决方案--------------------
{}=={} //值为false
因为它俩是没有关系的两个对象
(function(){alert(1)})();
这是闭包写的法,你也可以写成:(function(){alert(1)}());
第一个括号表示里面是一个函数表达式,js解析器在看到‘(function’时,他会认为这是一个函数表达式
第二个括号是函数运算符。

而下面这样写要报语法错误,js解析器在看到‘function’关键字时,他会认为这是一个函数定义,后面加‘()’时它无法识别
function(){alert(2)}();