javaScript学习随笔
2013-06-06 14:27
218 查看
偶然间看见一篇文章,惊叹之余,倍感汗颜啊《So, you think you know JavaScript?》
先看看他的题目吧:
下面对上面的题目做以分析:
第一题:
首先,js中可以用 "变量名" in window 来判断全局变量中是否有该变量名,然后我们要知道,javascript引擎对变量的声明和复制的方式。
在javascript中,它会首先扫描js总所有的变量名声明,并将它提到最上面,我们看一个例子:
第二题:
同样,有以下知识点:
1.函数的声明同变量名的声明一样,同样会提前执行(注:是函数的声明 ,如 function a(){alert()},而不是 var a = function(){});
2.函数的声明优先级大于变量名的声明,也就是说,函数的声明会覆盖变量名,如:
第三题很简单,知道上面的知识点的话,很容易找到答案
第四、第五题主要是对
"arguments" 和 call的应用问题,可以去w3c中看,哪里有很详尽的解释。
先看看他的题目吧:
//题目一 if (!("a" in window)) { var a = 1; } alert(a); //题目二 var a = 1, b = function a(x) { x && a(--x); }; alert(a); //题目三 function a(x) { return x * 2; } var a; alert(a); //题目四 function b(x, y, a) { arguments[2] = 10; alert(a); } b(1, 2, 3); //题目五function a() { alert(this); } a.call(null);不知道,全部能答对的有多少人。而后研究其原因,仍有许多不解,后看了七月对其的分析后,毛瑟顿开,并最学习记录
下面对上面的题目做以分析:
第一题:
首先,js中可以用 "变量名" in window 来判断全局变量中是否有该变量名,然后我们要知道,javascript引擎对变量的声明和复制的方式。
在javascript中,它会首先扫描js总所有的变量名声明,并将它提到最上面,我们看一个例子:
alert("a" in window); var a; //其运行结果为true,也就证明了javascript引擎在运行时实际的js是: var a; alert("a" in window); //最后需要补充的是,javascript中虽然变量名声明提前了,但它的赋值并没有提前。 //这样,第一题就等同于 //变量被提前了 var a; //所以a就是window中变量了,所以为false if (!("a" in window)) { a = 1; } alert(a);
第二题:
同样,有以下知识点:
1.函数的声明同变量名的声明一样,同样会提前执行(注:是函数的声明 ,如 function a(){alert()},而不是 var a = function(){});
2.函数的声明优先级大于变量名的声明,也就是说,函数的声明会覆盖变量名,如:
function a (){ alert(); } var a ; alert(a); //但是,虽然函数名会覆盖变量名,但是不会覆盖赋值,如将上面的代码改为 function a (){ alert(); } var a = 1; alert(a);第三题:
第三题很简单,知道上面的知识点的话,很容易找到答案
第四、第五题主要是对
"arguments" 和 call的应用问题,可以去w3c中看,哪里有很详尽的解释。
相关文章推荐
- 学习JavaScript随笔1
- javascript 学习随笔6
- JavaScript学习随笔--函数作用域
- javascript学习随笔(二)原型prototype
- javascript学习随笔(使用window和frame)的技巧
- Ajax/JavaScript学习随笔:java script Object Notation(JSON)
- javascript学习随笔(二)原型prototype
- 学习javascript时的一些总结随笔
- javascript学习随笔(Navigator 对象)
- JavaScript 学习随笔(二)
- javascript学习随笔(编写浏览器脚本 Navigator Scripting )
- javascript学习随笔(使用window和frame)的技巧
- javascript学习随笔(使用window和frame)的技巧
- 学习javascript的随笔1
- javascript学习随笔(使用window 和 frame )
- javascript 对象学习随笔
- javascript 学习随笔
- javascript学习随笔(编写浏览器脚本 Navigator Scripting )
- Javascript学习要点随笔
- javascript 学习随笔3