容易犯的javascript小错误

时间:2023-01-07 13:38:23
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!