Javascript 为什么会有;“不是一个函数”;使用es6语法在函数声明之前调用函数时出错?

Javascript 为什么会有;“不是一个函数”;使用es6语法在函数声明之前调用函数时出错?,javascript,ecmascript-6,Javascript,Ecmascript 6,使用旧语法 打印“这是myfunc1” 使用es6语法 这会出现错误“myfunc2不是函数” 功能声明已悬挂 使用var关键字的变量声明也会被提升(这意味着Javascript引擎“知道”变量已被声明)但是,因为赋值不会被提升,所以在执行赋值的代码行之前,变量将包含未定义的 不考虑这个“旧”和“新”的语法。 函数声明、函数表达式和箭头函数都具有。虽然arrow函数是最近才引入该语言的,但它们并不是函数声明或函数表达式的替代品。函数声明被搁置 使用var关键字的变量声明也会被提升(这意味着Ja

使用旧语法

打印“这是myfunc1”

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


功能声明已悬挂

使用
var
关键字的变量声明也会被提升(这意味着Javascript引擎“知道”变量已被声明)但是,因为赋值不会被提升,所以在执行赋值的代码行之前,变量将包含
未定义的


不考虑这个“旧”和“新”的语法。


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

函数声明被搁置

使用
var
关键字的变量声明也会被提升(这意味着Javascript引擎“知道”变量已被声明)但是,因为赋值不会被提升,所以在执行赋值的代码行之前,变量将包含
未定义的


不考虑这个“旧”和“新”的语法。


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

这与ES6语法无关。在实例化变量之前,您正在使用该变量。执行
var myfunc1=function()而不是未定义的?如果我在声明变量之前打印它,Js打印未定义的。它是否与提升有关?这与ES6语法无关。在实例化变量之前,您正在使用该变量。执行
var myfunc1=function()而不是未定义?如果我在声明变量之前打印它,Js将打印未定义的变量。
myfunc1();

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

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