报错--Maximum call stack size exceeded超出最大调用堆栈大小

532 阅读1分钟

Maximum call stack size exceeded错误描述:超出最大调用堆栈大小

image.png

概念:

js中的堆栈内存,俗称叫做作用域(全局作用域/私有作用域),为js代码执行的环境(执行js代码的地方),基本数据类型值是存在栈内存的

堆内存: 存储引用数据类型值的(相当于一个存储的仓库),对象存储的是键值对,函数存储的是代码字符串;

栈内存: 一般情况下,函数执行形成栈内存,函数执行完,浏览器会把形成的占内存自动释放;有时候执行完成,占内存不能被释放,全局作用域在加载页面的时候执行,在关掉页面的时候销毁;

原因:挂载路由导航守卫

原代码:

// 挂载路由导航守卫
router.beforeEach((to, from, next) => {
  if (to.pash === '/login') return next()
  // 获取 token
  const tokenStr = window.sessionStorage.getItem('token')
  // 判断 token
  if (!tokenStr) return next('/login')
  next()
})

代码改造:解决

// 挂载路由导航守卫
router.beforeEach((to, from, next) => {
  if (to.pash === '/login') return next()
  // 获取 token
  const tokenStr = window.sessionStorage.getItem('token')
  // 判断 token
  if (!tokenStr && to.path !== '/login') return next('/login')
  next()
})