刚注册CSDN就看到非常有意思的5段代码,所以就记一下自己的想法和心得。
第一段:
<pre name="code" class="javascript">if (!("a" in window)) {
var a = 1;
}
alert (a);
首先解析函数,然后var声明 函数变量但是并不赋值; So “a” in window = true。则不会进入if判断那么alert出来的东西就是undefined。
第二段:
var a,b =function a(x){
x&&a(--x);
}
alert(a);
首先声明两个变量a,b; a=1,b=function a(x);那么alert出来当然是1.
第三段:
function a(x) {
return x * 2;
}
var a;
alert (a);
先解析函数,然后声明一个var a;与上一段不同的是函数a并没有赋值给其他变量,并且声明的变量啊并没有赋值。所以alert出来的当然是function a;
第四段
function b (x, y, a) {
<span style="white-space:pre"> </span>arguments[2] = 10;
<span style="white-space:pre"> </span>alert (a);
}
b(1, 2, 3);
函数内部可以引用一个argument[index]对象,代表函数接收参数的集合。而alert在函数中,且a=argument[2]=10;那么alert出来的东西就是10。
第五段
function a () {
alert (this);
}
a.call (null);
alert(a);
没看懂,等到以后js学好的时候在回来改吧
![大笑](http://static.blog.csdn.net/xheditor/xheditor_emot/default/laugh.gif)