javascript - js函数中的函数问题?
本文介绍了javascript - js函数中的函数问题?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
function test(){
var arr = [];
for(var i = 0; i < 5; i++){
arr[i] = function a() {
return i;
}
a();
}
return arr;
}
test();//a is not defined
function c(){
function d(){
console.log('2');
}
d();
}
c(); //2
为什么第一个是undefined呢,不是明明定义了a吗在之前?
解决方案
函数表达式的函数名字只属于它自己的作用域
以你第二段代码为样本改成函数表达式:
function c(){
var test = function d(){
console.log('2');
}
test();
}
c(); //2
上面这样是没有问题的,但是改成这样:
function c(){
var test = function d(){
console.log('2');
}
d();
}
c(); //Uncaught ReferenceError: d is not defined
引用错误ReferenceError
。
作用域中查找标识符但是最后没有找到的时候就会抛出这个错误。
也就是说当前作用域中压根就没有以d
作为标识符的变量(函数)。
(顺带一提,如果在这里找到了d
标识符,但是它不是函数无法运行,会抛出TypeError
类型错误。)
那么,标识符d
到底在哪个作用域?
答案是它自己:
function c(){
var test = function d(){
console.log(d);
}
test();
}
c();
这里最后会把函数d
打印出来,在函数d
内部是可以使用d
标识符的。
这篇关于javascript - js函数中的函数问题?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文