Javascript:处理常量和跨浏览器兼容性
Javascript: dealing with constants and cross-browser compatibility
刚读完 (const
) Behavior will vary across browser implementations。我指出的答案已经很老了(2012 年)所以,它还是那么糟糕吗?
因为我的项目需要跨浏览器兼容性,所以我应该避免使用 const
关键字吗?
如果 'yes' - 我该如何更换一个?
UPD:
刚刚检查了 developer.mozilla.org 上的描述。是的:看起来很糟糕......
const
在旧浏览器中不可用(我在看你,IE,Safari)。
如果您想安全起见,并且没有构建步骤(Babel、TypeScript 等),请仅使用 var
。 Babel 和 TypeScript 都会将你的 const
s 和 let
s 编译成 var
s。因此,如果您使用这些工具中的任何一个,您可以自由使用 const
和 let
。
请注意 var
并不严格等同于 let
或 const
。 (var
被提升,并且具有不同的范围)。
此外,如果您不关心 IE 或 Safari,您几乎可以在没有构建工具的情况下使用 const
。
您可以简单地使用 var instead of const 来支持旧浏览器。 (** 请记住 var
在某种程度上不等同于 const
)
为了保护 var
不被更改,您可以将它放在私有范围内而不是全局范围内。 (所以它会部分像 const
一样工作)
刚读完 (const
) Behavior will vary across browser implementations。我指出的答案已经很老了(2012 年)所以,它还是那么糟糕吗?
因为我的项目需要跨浏览器兼容性,所以我应该避免使用 const
关键字吗?
如果 'yes' - 我该如何更换一个?
UPD:
刚刚检查了 developer.mozilla.org 上的描述。是的:看起来很糟糕......
const
在旧浏览器中不可用(我在看你,IE,Safari)。
如果您想安全起见,并且没有构建步骤(Babel、TypeScript 等),请仅使用 var
。 Babel 和 TypeScript 都会将你的 const
s 和 let
s 编译成 var
s。因此,如果您使用这些工具中的任何一个,您可以自由使用 const
和 let
。
请注意 var
并不严格等同于 let
或 const
。 (var
被提升,并且具有不同的范围)。
此外,如果您不关心 IE 或 Safari,您几乎可以在没有构建工具的情况下使用 const
。
您可以简单地使用 var instead of const 来支持旧浏览器。 (** 请记住 var
在某种程度上不等同于 const
)
为了保护 var
不被更改,您可以将它放在私有范围内而不是全局范围内。 (所以它会部分像 const
一样工作)