4 个回答

1、函数声明

function a () {}

2、函数表达式

const b = function () {}

这是两个不同的概念;具体的请看

两个问题:
1、不是所有变量声明都会提升,只有var才会,let/const有暂时性死区,在声明语句前使用都会报错,不管值是不是函数。
2、即使使用var了也不会提升赋值语句,要注意声明提升提升的到底是啥。仅仅是提升这个变量名,赋值语句还是在原来的位置,举例如下:

console.log(a);
var a = 1;

等价于

var a;
console.log(a);
a = 1;

这个问题有意思。

首先,这里报错确实是因为在声明 b 之前使用了 b,用 const 或者 let 都会这样,不用纠结原因,记住不能在声明前使用就对了。

问题是,就算改成 var,仍然会报错,只不过报的是:b 不是函数。

var 可以让变量声明提升,但声明(更准确地说是 Initialization,初始化)只会给它默认的 undefined,赋值为函数,是在使用(调用 b())之后的事情,所以会报这个错。

const 声明的变量b是没有变量提升的过程的,如果使用var b ,则b变量会存在变量提升的过程

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