注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

snoopyxdy的博客

https://github.com/DoubleSpout

 
 
 

日志

 
 

容易犯的javascript小错误(不断更新)  

2011-05-27 15:36:46|  分类: web前端技术 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
1、不好的代码习惯:
var ex =function()
{
return
{
name:"snoopyxdy"
};
}();
alert(ex.name); //ex is undefined   (令人惊讶吧!)
完全没有语法错误的代码,为什么会报错呢?呵呵!

2、坑爹的日期格式:
var mydate = new Date('2010-09-10');
var mydate2 = new Date('2010-09-10 19:01:10');
alert(mydate); //Fri Sep 10 2010 08:00:00 GMT+0800
alert(mydate2); //Invalid Date (坑爹吧)
一样的日格式,为什么加了时分秒就出错了呢?呵呵!

3、小学数学没学好:
var a = 0.1;
var b = 0.3;
var c = 0.2;
alert(a+b);   //0.4
alert(a+c);  //0.30000000000000004 (我的天啊!)
为什么0.1+0.2不等于0.3呢?呵呵!

4、邪恶的孪生兄弟:
alert(""=="0"); //false
alert(0==""); //true
alert(false=="false"); //false
alert(false=="0"); //true
alert(false==undefined); //false
alert(false==null); //false
alert(null==undefined); //true
alert("\t\r\n"==0) //true
为什么这些东西有的是TRUE有的是FALSE呢?呵呵!

5、数组的赋值:
var a = [1,2,3];
var b = a;
a.pop();
alert(b[1]); // 2
alert(b[2]); // undefined
我明明改了数组A为什么数组B也改了呢?呵呵!


6、parseInt短路了吗:
alert(parseInt('05')) //5
alert(parseInt('09')) //0
为什么字符串09改整形会变成0?呵呵!

7、2种函数定义的区别:
alert1(); //11
alert2(); //alert2 is not a function
function alert1(){
alert(11);
}
var alert2 = function(){
alert(22)
}
为什么alert2这个函数无法正常运行呢?呵呵!

8、牛B的wzh文件:
<script type="text/javascript" src="http://snoopyxdy.blog.163.com/blog/myjs.wzh"></script>   //注意红色的部分   
myjs.wzh内容为:alert("我来自myjs.wzh");
运行脚本结果:alert("我来自myjs.wzh");
明明加载的是.wzh文件,怎么可以运行js脚本啊?呵呵!

9、比较出问题了:
var a = '23';
var b = '3';
if(a<b){               //true
alert("my god!");       
//do somthing

}
这里的IF语句执行了!

10、函数的赋值:
function sum(s1,s2){
return s1+s2
}
var a_sum = sum;
sum = null;
alert(sum(10,10));    //出错
alert(a_sum(10,10));     //20
为什么这里的赋值结果和数组的赋值结果不一样呢?呵呵!

11、关于new创建的引用类型实例和自动创建的基本包装类型对象:
名字有点长,不过其实是很简单的2个东西,直接看代码:
var s1 = "aaa";
s1.color = "xxx";
alert(s1.color);      //undefined

var s2 = new String("aaa")
s2.color = "xxx";
alert(s2.color);   //xxx
为什么2个结果完全不一样呢?

12、关于Boolean对象:
var bl = new Boolean("false");
var r = bl && true;
alert(bl);   //true
这是什么情况呢,判断出问题了?仔细想想!


13、关于i++:
var i = 0;
var a = [1,2];
var b = a[i++];
alert(b);   //1
为什么b不是2呢?

14、关于匿名函数:
var x = function(){
alert('x');
};
var y = function(){
alert('y');
}();
x();  //alert('x')
y();  //y is not a function
为什么y不能运行呢?

15、还是关于代码风格
var foo = function(){ alert("aa"); };
//foo();
(function(){ alert("bb"); }());

//alert(bb)
//alert(aa)

为什么aa和bb都alert了呢?

16、关于变量定义
var foo = 1;    
function bar() {    
    if (!foo) {    
        var foo = 10;    
    }    
    alert(foo);    
}    
bar();    
看下运行结果吧,alert了10!

17、关于函数定义
var a = 1;    
function b() {    
    a = 10;    
    return;    
    function a() {}    
}    
b();    
alert(a);    
看下运行结果吧,alert了1!

暂且先写到这里吧,以后碰到再补充吧~
有兴趣的朋友可以电邮联系:snoopyxdy@163.com
  评论这张
 
阅读(706)| 评论(3)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016