在ES6之前,JavaScript中的函数声明会被提升到当前作用域的顶部,因此可以在函数声明之前调用函数。然而,在ES6中引入了块级作用域和箭头函数,这导致了函数声明的行为发生了变化。
在ES6中,使用关键字let
和const
声明的变量和常量会受到块级作用域的限制,只能在声明之后才能被访问。这意味着在块级作用域内部声明的函数,只能在声明之后才能被调用。
例如,考虑以下代码:
{
foo(); // 报错:ReferenceError: foo is not defined
let foo = function() {
console.log("Hello");
};
}
在上面的代码中,由于使用了let
声明了foo
函数,所以在函数声明之前调用foo
会导致引用错误。这是因为foo
只在块级作用域内部存在,而在声明之前访问它会超出其作用域。
这种行为的改变是为了提高代码的可读性和可维护性。在ES6之前,由于函数声明会被提升,可能会导致代码中的函数调用出现在函数声明之前,这样的代码会让人困惑。通过在块级作用域内部声明函数,并在声明之后调用,可以更清晰地表达代码的意图。
总结起来,ES6中不使用这个
来引用同级方法是因为在块级作用域内部声明的函数只能在声明之后才能被调用,这是为了提高代码的可读性和可维护性。
领取专属 10元无门槛券
手把手带您无忧上云