我有以下代码可以正常工作:
const user = {
hello() {
console.log("Hi:", this)
}
}
const commonJs = (user) => function() {
(0, user["hello"])()
}
commonJs(user)()
但是,当我添加
console.log("Running")
时,我收到错误Uncaught TypeError: console.log(...) is not a function
:
const user = {
hello() {
console.log("Hi:", this)
}
}
const commonJs = (user) => function() {
console.log("Running")
(0, user["hello"])()
}
commonJs(user)()
我不明白为什么会发生这种情况,因为我认为添加一个简单的
不会导致任何问题。谁能解释一下这里出了什么问题吗?console.log
我注意到,当我在
;
之后添加分号 (console.log("Running")
) 时,错误消失了:
const user = {
hello() {
console.log("Hi:", this)
}
}
const commonJs = (user) => function() {
console.log("Running");
(0, user["hello"])()
}
commonJs(user)()
但是我不明白为什么没有分号就会出现错误。
如果没有分号,代码将被解释为:
console.log("Running")(0, user["hello"])()
由于 .log() 不返回任何内容,因此会发生类型错误,因为看起来您正在尝试调用 .log() 返回的函数。