javascript - 请问 js 非严格模式下报错 f is not a function

查看:54
本文介绍了javascript - 请问 js 非严格模式下报错 f is not a function的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

请问为什么不加严格模式会报
TypeError: f is not a function

解决方案

在非严格模式下, 你的代码等价于

var f
f = function() {...}
(function() {
  var f
  if (false) {
    f = function() {...}
  }
  f()
} ())

自执行函数中, f的定义被提前, 离开了if代码块, 但赋值仍在if中, 所以到执行时f是undefined

在严格模式下, 你的代码等价于

let f
f = function() {...}
(function() {
  if (false) {
    let f
    f = function() {...}
  }
  f()
} ())

内部f的定义也是在if中的, 所以f用的是外面的f

这篇关于javascript - 请问 js 非严格模式下报错 f is not a function的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆