这种JS函数的写法该如何理解

常见的 JS 函数的写法如下

function printNum(num){
    console.log(num);
}

和下面的写法有什么不同?下面的 countDown 是代表了函数的地址吗?

const countDown = (num: number) => {
    console.log(num);
}
阅读 2.1k
4 个回答

没有太大的区别,下面这种是 typescript + 箭头函数

前者会提升,后者不会提升,即,前者可以先调用,再定义,后者必须先定义,再调用。其次 this 指向会有区别。

printNum(2);// expected

function printNum(num){
    console.log(num);
}
countDown(2);// error
const countDown = (num: number) => {
    console.log(num);
}

上面的讲的已经清楚了,再补充一点。
如果存在同名的函数声明和函数表达式的话,函数声明的优先级会高于函数表达式。参考:

log() // 1
function log() {
 console.log(1)
}

var log = () => {
 console.log(2)
}

log() // 2

函数声明且不会被变量声明覆盖,但是会被变量赋值之后覆盖。

下面是箭头函数,看看 mdn 文档

区别就是箭头函数没有自己的this

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题