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> //注意红色的部分
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
这是什么情况呢,判断出问题了?仔细想想!
运行脚本结果: 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(){
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"); }());
var foo = function(){ alert("aa"); };
//foo();
(function(){ alert("bb"); }());
//alert(bb)
//alert(aa)
为什么aa和bb都alert了呢?
//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!