Javascript教程:关于深入了解JS的几个问题
置运行的,而函数表达式则不会,运行如下两段代码:
DaimaRen.cn © 2009-2010 by Tomie Zhang
foo();//将会弹出什么呢? function foo(){ alert("i am a function function declaration from daimaren.cn"); } var foo = function(){ alert("i am a function function expression from daimaren.cn"); } DaimaRen.cn © 2009-2010 by Tomie Zhang
function foo(){ alert("i am a function function declaration from daimaren.cn"); } var foo = function(){ alert("i am a function function expression from daimaren.cn"); } foo();//又将会弹出什么呢? 通过这两个例子我们可以请清楚的知道,第二题的答案将一直是1. DaimaRen.cn © 2009-2010 by Tomie Zhang
function a(x) { return x * 2; } var a; alert(a); 如果理解了前面的变量前置的概念,那这个也很好理解了,唯一不同的是函数声明的优先级是高于普通的变量声明的除非变量声明被初始化,也就是说,上面这段代码将先去执行function a而忽略掉var a,考虑如下: DaimaRen.cn © 2009-2010 by Tomie Zhang
function a(x) { return x * 2; } var a = “1”; alert(a); 第四题 DaimaRen.cn © 2009-2010 by Tomie Zhang
function b(x, y, a) { arguments[2] = 10; alert(a); } b(1, 2, 3); 这个很好理解,运行的值为10,这里主要是对arguments的理解,引下ECMA-262第三版 10.1.8章节对arguments的解释如下:
参数对象相当于对应参数建立的副本,参数改变 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |