有啥理由不放弃“var”吗?

Posted

技术标签:

【中文标题】有啥理由不放弃“var”吗?【英文标题】:Is there any reason not to abandon "var"?有什么理由不放弃“var”吗? 【发布时间】:2017-08-29 15:36:51 【问题描述】:

在学习javascript的过程中,了解到Letconst的引入是为了解决Var在全局作用域和提升以及重新声明不报错的问题。

现在我可以在不使用var 的情况下完全编写代码吗?还是我应该暂时了解它们并等到它们被广泛“接受”?

也就是说,如果我暂时只使用letconst,我应该担心兼容性问题吗?

【问题讨论】:

var 仍有它的用途:***.com/questions/762011/…。 您应该担心与let 和const 的兼容性问题,因为它们似乎在IE10 及更低版本以及各种其他浏览器中均不受支持。 @George 转换器存在你知道的。兼容性几乎总是一个红鲱鱼。 很少有浏览器支持es6,你应该坚持旧版本并继续使用var。 我不相信“我会遇到兼容性问题吗?”是一个基于意见的问题,所以投票重新开放。 【参考方案1】:

直接回答这个问题 - 不,你不能,因为兼容性问题,@suraj 好心提醒我们。

话虽如此,在现代 JS 开发中,您越来越不可能使用 var,因为 letconst 具有明显的优势,除了 var 的一些特定用途之外,将使用任一 BabelJS TypeScript 甚至是现在的 Webpack 2 来编译代码以实现向后兼容性,因为生产代码将在 vanilla JS 中提供。现代 IDE,比如 WebStorm,甚至会默认在 ES6 模式下对你的 var 进行 lint,以将它们更改为 let

从问题来看,你还在学习JS,你已经问对了问题,所以我建议今天使用letconst来利用ES6的优势,但这会增加处理转译器的复杂性。但是,如果您对此感到满意 - 这就是要走的路。

【讨论】:

转译器的想法听起来很有趣!

以上是关于有啥理由不放弃“var”吗?的主要内容,如果未能解决你的问题,请参考以下文章

一年多开源没进展,我也放弃了

有啥理由不使用“受保护”的属性吗?

C++:递归锁——有啥缺点吗?

cURL 有啥用? [关闭]

今天有啥理由不使用 <script defer> 吗?

使用 if(1 || !Foo()) 有啥理由吗?