the*_*orn -2 javascript ecmascript-6
定义全局函数时,我应该使用var, let, 还是const?
var fn = function () {};
let fn = function () {};
const fn = function () {};
Run Code Online (Sandbox Code Playgroud)
我在这里主要考虑 C/Pascal 意义上的全局函数,即在当前文件的其余部分中按名称可用/可见的函数。
当我学习 JavaScript 时,我们使用var fn=..或functino fn ()..,并且我正在尝试更新我的知识,因为浏览器现在本地支持 ECMAScript 6。
简而言之:我建议您使用const. 为什么?
(在以下示例中,假设我们处于浏览器环境中。)
它们被提升并成为全局对象的属性。
fn(); // No error
function fn() {}
console.log('fn' in window); // true
Run Code Online (Sandbox Code Playgroud)
var它们没有被提升,但在全局范围内声明的变量总是成为全局对象的一个属性。
fn(); // TypeError
var fn = function () {};
console.log('fn' in window); // true
Run Code Online (Sandbox Code Playgroud)
let它们不会被提升,也不会成为全局对象的属性,但您可以为变量分配另一个值。由于 JavaScript 是松散类型的,因此您的函数可以替换为字符串、数字或其他任何内容。
fn(); // ReferenceError
let fn = () => {};
console.log('fn' in window); // false
fn = 'Foo'; // No error
Run Code Online (Sandbox Code Playgroud)
const它们不会被提升,它们不会成为全局对象的属性,并且您无法通过重新分配来更改它们。事实上,常量不能被重新声明。
fn(); // ReferenceError
const fn = () => {};
console.log('fn' in window); // false
fn = 'Foo'; // TypeError
Run Code Online (Sandbox Code Playgroud)