我是JS的新手,所以如果听起来很蠢,请原谅我。我当时正在使用函数声明和函数表达式的概念。
我有以下代码:
var printSomething = function printSomeString(string) {
console.log(string);
}
console.log(typeof printSomething); // function
console.log(typeof printSomeString); // undefined
如果按照JavaScript中hoisting
的定义进行操作,那么在我使用printSomething
和printSomeString
时,由于已经声明了它们,因此它们应该可用。
typeof printSomething
返回函数,但是typeof printSomeString
返回未定义。为什么这样?
此命名函数表达式在使用之前是否已经声明并吊起?
命名函数表达式本身不是一个函数吗?
此外,当我致电printSomeString('Some STRING')
时,它会返回以下
未捕获的ReferenceError:未定义printSomeString
这是怎么回事?
答案 0 :(得分:1)
printSomeString
不是全局变量,其局部变量为另一个函数printSomething
。尝试在其中使用console.log()
。
var printSomething = function printSomeString(string) {
console.log(typeof printSomeString)
}
console.log(typeof printSomething); // function
printSomething()