javascript - 使用 es6 语法在函数声明之前调用函数,为什么会出现 "not a function"错误?

标签 javascript ecmascript-6

使用旧语法

打印“这是 myfunc1”

myfunc1();

function myfunc1() {
console.log("this is myfunc1");
}

使用es6语法 这会给出错误“myfunc2 不是函数”

myfunc2();

var myfunc2 = () => {
  console.log("this is myfunc2");
}

最佳答案

函数声明被提升。

使用 var 关键字的变量声明也会被提升(意味着 Javascript 引擎“知道”变量已被声明)但是,因为赋值不会被提升,变量将包含undefined,直到执行赋值的代码行被执行为止。

<小时/>

不要考虑这种“旧”和"new"语法。

函数声明、函数表达式和箭头函数都有 different behaviour 。虽然箭头函数是最近才引入该语言的,但它们不能替代函数声明或函数表达式。

关于javascript - 使用 es6 语法在函数声明之前调用函数,为什么会出现 "not a function"错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59615447/

相关文章:

javascript - 在滚动菜单上更改类,首先单击问题

javascript - forEach 模仿 .map() 函数

Javascript对象数组然后删除元素

javascript - 在图表中 react DataKey

node.js - 使用 KoaJS 在 ES2015 中的类中使用带有 Yield 的生成器函数

javascript - 内容脚本不会在每次页面加载时都被注入(inject)

javascript - 单击 dblclick 时隐藏表格列

javascript - 使用clearInterval()将 “snooze”按钮添加到闹钟。我究竟做错了什么?

javascript - 警告 : Failed prop type: Invalid prop `error` of type `string` expected `boolean`

javascript - 每次计算的可观察值发生变化时运行一个函数