JavaScript脑筋急转弯

来源:互联网 发布:算法爱好者 公众号 编辑:程序博客网 时间:2024/05/29 17:35

刚注册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学好的时候在回来改吧大笑


0 0
原创粉丝点击