在同一页使用 es6 function 即便没有先宣告

在同一页使用 es6 function 即便没有先宣告

mma()

let mma = () => {

console.log(1)

}

会出错

Uncaught TypeError: mma is not a function

但这样子

mma()

function mma() {

console.log(1)

}

没毛病

那 es6 怎么样没宣告也可以无痛使用?


回答:

mma()

function mma() {

console.log(1)

}

这种方式定义的函数,会存在声明提升,也就是说,实际的效果是下面这样的

function mma() {

console.log(1)

}

mma()


mma()

let mma = () => {

console.log(1)

}

而这样的不行存在两个原因,第一,其实如果你把 let 换成 var 也不行,如果换成 var ,就等同于

var mma;

mma()

mma = () => {

console.log(1)

}

另外,就是 let 还存在一个暂时性死区的问题。

以上是 在同一页使用 es6 function 即便没有先宣告 的全部内容, 来源链接: utcz.com/p/937532.html

回到顶部