新足迹

 找回密码
 注册

精华好帖回顾

· 〖毛家每日私房菜〗 No.62→ 正宗东北酸菜川白肉!!(最有东北特色的代表菜) (2006-6-3) powermao · 铁枪记载:男人当吃遍天下 (2005-12-21) 铁枪
· 大奇瑞,Infiniti FX50S,新车作业!25/12 21:24更新 (2013-12-23) billow1124 · 2016年1月房车游塔州 (2016-1-29) 明河素月
Advertisement
Advertisement
查看: 1390|回复: 13

javascript 初级问题(新问题在11楼) [复制链接]

头像被屏蔽

禁止访问

发表于 2011-9-28 00:01 |显示全部楼层
此文章由 atransformer 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 atransformer 所有!转贴必须注明作者、出处和本声明,并保持内容完整
function createRequest() {
         try {
             ggg = new XMLHttpRequest();
         } catch (tryMS) {
             try {
                 ggg = new ActiveXObject("Msxml2.XMLHTTP");
             } catch (otherMS) {
                 try {
                     ggg = new ActiveXObject("Microsoft.XMLHTTP");
                 } catch (failed) {
                     ggg = null;
                 }
             }
         }
         return ggg;
     }
     function getDetails(itemName) {
         xxx = createRequest();
         if (xxx == null) {
             alert("Unable to create request");
             return;
         }
         var url = "getDetails.php?ImageID=" + escape(itemName);
         xxx.open("GET", url, true);
         xxx.onreadystatechange = displayDetails;
         xxx.send(null);
     }
     function displayDetails() {
         if (ggg.readyState == 4) {
             if (ggg.status == 200) {
                 detailDiv = document.getElementById("description");
                 detailDiv.innerHTML = ggg.responseText;
             }
         }
     }

///////////////////////////////////////////////////////
function displayDetails 里面没有定义 ggg, 为何能够识别到?

[ 本帖最后由 atransformer 于 2011-9-30 11:38 编辑 ]
Advertisement
Advertisement

发表于 2011-9-28 00:10 |显示全部楼层
此文章由 IsDonIsGood 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 IsDonIsGood 所有!转贴必须注明作者、出处和本声明,并保持内容完整
同问,遇到一样的问题,
顺便借楼问下,js重复定义一个同样的function为啥不报错而是直接调用后写的一个,这个bug藏得很深,两个function 一模一样,只是第二个comment了一句,找的我自戕的心都有了。

呼.net众仙解释一下~

发表于 2011-9-28 00:28 |显示全部楼层
此文章由 rumcoke 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 rumcoke 所有!转贴必须注明作者、出处和本声明,并保持内容完整
楼主 你没有使用var来声明变量 这种情况下 当含有ggg的方法被调用 该变量会被认为是全局的

楼上的issue我在另一个script语言里也遇到过 support给出的答案就是没有重载 直接调用后一个 建议用不同的方法名...

评分

参与人数 1积分 +4 收起 理由
atransformer + 4 感谢分享

查看全部评分

发表于 2011-9-28 09:23 |显示全部楼层
此文章由 混不到坑的萝卜 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 混不到坑的萝卜 所有!转贴必须注明作者、出处和本声明,并保持内容完整
Don't you guys use JSLint or JSHint? Hopeless...

发表于 2011-9-28 09:31 |显示全部楼层
此文章由 乱码 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 乱码 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 IsDonIsGood 于 2011-9-27 23:10 发表
同问,遇到一样的问题,
顺便借楼问下,js重复定义一个同样的function为啥不报错而是直接调用后写的一个,这个bug藏得很深,两个function 一模一样,只是第二个comment了一句,找的我自戕的心都有了。

呼.net众仙解释一下~


1.variable 的定义永远跟var,否则就定义到global去了,除非你想这么做。如果在function中,在开始就定义。定义多个用coma分开。

2. function跟其他的variable没什么太大的区别,定义两次,后面一次override前面那个,这种在js是合理的,它不认为是错。

评分

参与人数 1积分 +2 收起 理由
atransformer + 2 谢谢奉献

查看全部评分

发表于 2011-9-28 10:07 |显示全部楼层
此文章由 IsDonIsGood 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 IsDonIsGood 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 乱码 于 2011-9-28 08:31 发表


1.variable 的定义永远跟var,否则就定义到global去了,除非你想这么做。如果在function中,在开始就定义。定义多个用coma分开。

2. function跟其他的variable没什么太大的区别,定义两次,后面一次override前面那个,这种在js是合理的,它不认为是错。

老大可以理解成这是js的缺陷之一么?
Advertisement
Advertisement

发表于 2011-9-28 10:22 |显示全部楼层
此文章由 典 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 典 所有!转贴必须注明作者、出处和本声明,并保持内容完整
如果东西比较多,最好是有自己的name space,
1)如果没有自己的name space, 意味着一切object/function都挂到global (window)这个object 下,不安全,可能被自己或者别人overwrite,而且系统要花比较多的资源去维护这个global的object
2) intelligence, 方便编程,尤其是多人协作,不知道别人写了哪些函数,用name space就很方便, 以下面这个为例,当你输入myajax.时,会自动弹出所有的property/method供你选择

改一下LZ的代码,大约可以这样优化(未经测试)

var myajax={ // my name space is myajax
ggg:null;
};

myajax.createRequest= function () {
        if(this.ggg) return this.ggg; //如果已经有值,直接跳回
         try {
             this.ggg = new XMLHttpRequest();
         } catch (tryMS) {
             try {
                 this.ggg= new ActiveXObject("Msxml2.XMLHTTP");
             } catch (otherMS) {
                 try {
                     this.ggg= new ActiveXObject("Microsoft.XMLHTTP");
                 } catch (failed) {
                     this.ggg= null;
                 }
             }
         }
         return this.ggg;
     }
     myajax.getDetails=function(itemName) {
         xxx = this.createRequest();
         if (xxx == null) {
             alert("Unable to create request");
             return;
         }
         var url = "getDetails.php?ImageID=" + escape(itemName);
         xxx.open("GET", url, true);
         xxx.onreadystatechange = this.displayDetails;
         xxx.send(null);
     }

[ 本帖最后由 典 于 2011-9-28 09:24 编辑 ]

评分

参与人数 1积分 +4 收起 理由
atransformer + 4 太给力了

查看全部评分

发表于 2011-9-28 10:48 |显示全部楼层
此文章由 乱码 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 乱码 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 IsDonIsGood 于 2011-9-28 09:07 发表

老大可以理解成这是js的缺陷之一么?


我觉得它这样挺好的

发表于 2011-9-28 10:50 |显示全部楼层
此文章由 乱码 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 乱码 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 于 2011-9-28 09:22 发表
如果东西比较多,最好是有自己的name space,
1)如果没有自己的name space, 意味着一切object/function都挂到global (window)这个object 下,不安全,可能被自己或者别人overwrite,而且系统要花比较多的资源去维护这个global ...


namespacedotjs不错。

https://github.com/smith/namespacedotjs

发表于 2011-9-28 11:19 |显示全部楼层
此文章由 rumcoke 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 rumcoke 所有!转贴必须注明作者、出处和本声明,并保持内容完整
脚本语言的类型都是runtime定义 所以重载很难实现 这是我的理解 而且我觉得如果OO类语言也能做到这一点会非常方便 不觉得是缺陷
头像被屏蔽

禁止访问

发表于 2011-9-30 12:02 |显示全部楼层

这个东西 somearray[0,1,2] , 实际工程中有什么用??

此文章由 atransformer 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 atransformer 所有!转贴必须注明作者、出处和本声明,并保持内容完整
<html>
<head>
        <script type="text/javascript">
function x()
{
        var somearray = new Array();
somearray[0] = "xxx";
somearray[1] = "yyy"
somearray[2] = "zzz";
document.write(somearray[0,1,2]);

}
        </script>
</head>
<body onload='x()'>
</body>
</html>
Advertisement
Advertisement

发表于 2011-9-30 13:48 |显示全部楼层
此文章由 鱼羊鲜 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 鱼羊鲜 所有!转贴必须注明作者、出处和本声明,并保持内容完整
没见过这么用的
头像被屏蔽

禁止访问

发表于 2011-9-30 13:59 |显示全部楼层
此文章由 atransformer 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 atransformer 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 鱼羊鲜 于 2011-9-30 12:48 发表
没见过这么用的


我也是才看见。不明白为何要设计这种语法

发表于 2011-9-30 14:56 |显示全部楼层
此文章由 乱码 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 乱码 所有!转贴必须注明作者、出处和本声明,并保持内容完整
it's bad part of javascript

发表回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Advertisement
Advertisement
返回顶部