首页 > 程序开发 > web前端 > JavaScript >

{{JS}}function语句

2012-08-11

请问以下语句输出结果是:alert(f(4));var f = 0;function f(x) { return x + 1;}alert(f);答案是:// 5// 0这里需要解释下原因——出现这种结果的原因是由于函数定义和变量定义发生在不同的时刻.在J...

请问以下语句输出结果是:
alert(f(4));
var f = 0;
function f(x) {
return x + 1;
}
alert(f);

答案是:
// 5
// 0

这里需要解释下原因——出现这种结果的原因是由于函数定义和变量定义发生在不同的时刻.
在JS中函数定义发生在解析时,而不是在运行时.当JS解析程序遇到一个函数定义时它就会解析并存储(而无需执行)构成函数主体的语句,然后定义一个和该函数同名的属性(如果函数定义嵌套在其它函数中,那么就会在调用对象中定义这个属性,否则在全局对象中定义这个属性)以保存它.

如上说法,你就能明白为什么JS中强调函数定义不能出现在if/while或其它语句中,如下
if(a === 1) {
function get(param) {
return param + 1;
}
} else {
function get(param) {
return param + 2;www.2cto.com
}
}

由于函数定义发生在解析时,故get函数始终为第二个.


作者:bill200711022
相关文章
最新文章
热点推荐