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

关于js的知识,求助


if(!document.all&&document.getElementById) 

这个(!document.all&&document.getElementById)的document.getElementById代表什么

以前都是getElementById()这么用,不加括号代表什么

这个条件语句应该怎么理解



if (!("a" in window))
{
var a = 1;
}
alert(a);

var a = 1,
b = function a(x)
{
x && a(--x);
};
alert(a);
关于这段代码

"a" in window这个的意思是a在全局变量中?

为什么第一次弹出的a是一个函数?

------解决方案--------------------
引用:
"a" in window   是判断  window  对象中  是不是有一个 “a”  的 属性存在,按理说没定义的话应该是不存在的,但是我试了下,每次alert("a" in window)都会为true,不知道什么原因

如果你只写alert("a" in window)这一句应该是返回false的吧?
------解决方案--------------------
if(!document.all&&document.getElementById) 

!document.all如果 document里有一个all对象
document.getElementById 如果document里有一个getElementById 对象

参考代码

var a= {};
alert(a.b);
a.b=funciton(s){alert(s)};
alert(a.b);
alert(a.b("test"));

------解决方案--------------------
if(!document.all&&document.getElementById) 

这个(!document.all&&document.getElementById)的document.getElementById代表什么

以前都是getElementById()这么用,不加括号代表什么

这个条件语句应该怎么理解

Re:
用来判断运行环境的,因为document.all是IE独有的东东,所以!document.all为真时即表示不是在IE浏览器的环境下
这里的all和getElementById都是作为属性来使用的,getElementById加了()是当方法来使用了

至于第二个问题,估计是因为IE下预编译的问题吧。拎不清,就不误人子弟了