function func() {
setTimeout(function func2() {
console.log(2);
})
func2()
}
func();
这段代码报错。为何?
func2是在func内定义的吗?如果是在func定义的,为什么在func调用会报错呢?
function func() {
setTimeout(function func2() {
console.log(2);
})
func2()
}
func();
这段代码报错。为何?
func2是在func内定义的吗?如果是在func定义的,为什么在func调用会报错呢?
function func() {
setTimeout(function func2() {
console.log(2);
})
func2()
}
func();
等同于
function func() {
var anonymouseFunc1 = function func2() {
console.log(2);
};
setTimeout(anonymouseFunc1);
func2();
}
func();
func2
这个名字只在方法anonymouseFunc1
定义内有效
function func() {
function func2() {
console.log(2);
}
setTimeout(func2,1000)
}
func();
是函数表达式(FunctionEpxression)
函数声明需要以以下形式,
// 函数表达式
var f = function() {
console.log(1);
} // 直接声明
function f (){
console.log(2);
}
8 回答4.8k 阅读✓ 已解决
6 回答3.5k 阅读✓ 已解决
5 回答2.9k 阅读✓ 已解决
5 回答6.4k 阅读✓ 已解决
4 回答2.3k 阅读✓ 已解决
4 回答2.8k 阅读✓ 已解决
3 回答2.5k 阅读✓ 已解决
这是一个函数表达式(FunctionEpxression)。
跟函数声明(FunctionDeclaration)不同,函数表达式中的函数名仅在改函数表达式的函数体内部可用。