You need to enable JavaScript to run this app. 运行JS代码报TypeError: inner is not a function的原因是什么?
优惠活动
大模型
产品
解决方案
定价
更多

运行JS代码报TypeError: inner is not a function的原因是什么?

报错原因分析

给出的报错代码如下:

var inner = 10;

function inner() {
  console.log("Hey type", typeof inner);
}
inner()

这个错误是JavaScript的变量/函数提升规则导致的,具体逻辑如下:

  • JavaScript代码执行前会先经过预编译阶段,对当前作用域的声明进行提升处理:
    1. 函数声明的提升优先级高于var变量声明:预编译阶段会先识别到function inner()的函数声明,此时作用域内的inner标识符指向这个函数
    2. 后续遇到var inner的变量声明时,因为已经存在同名的inner标识符,这个变量声明会直接被忽略,不会覆盖已有的函数值
  • 进入逐行执行阶段后:
    1. 第一行代码var inner = 10是赋值操作,会直接把inner标识符的值从函数修改为数字10
    2. 执行到inner()调用时,inner当前存储的是数字类型的值,不是可调用的函数,所以会抛出TypeError: inner is not a function的错误。

如果要让代码正常执行,要么调整变量和函数的命名避免冲突,要么调整声明顺序在赋值前调用函数,示例如下:

// 调整顺序,在赋值前调用函数
function inner() {
  console.log("Hey type", typeof inner);
}
inner() // 正常输出
var inner = 10;

内容的提问来源于stack exchange,提问作者user16612176

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.09 02:48:04