今天来聊聊Javascript的优缺点.
因为是考虑执行速度, 因为解释型语言, JavaScript省掉了编译的步骤, 执行过程更轻量. 执行速度虽然不如c++, 但是因为有了V8引擎的加持, 速度要快过python.
其次,Javascript学习和理解起来很简单. 事实上, 它的第一个版本就是为了能在浏览器里, 验证用户在表单输入的内容是否规范. 所以javascript没有像其它语言一样很重的规范和限制, 同时和python一样, 它也是弱类型的动态语言.
由于主流的浏览器都支持JavaScript, 所以它很流行,几乎无所不在.
除了能做前端, 它还能做后端甚至移动端开发, 比如利用nodejs这类技术和相关的类库, 可以搭建起完整的后端体系. 一般用它的强类型版本typescript做后端开发, 做过后端的小伙伴的都知道, 模块化和强类型搞后端会更适合. 所以如果说只掌握一门语言就能做全栈开发, 那就是它了.
Javascript近10年进步飞速, 相关的组织每年都会发布新的语言标准,拓展语言的功能.
近些年出现的前端模块化框架比如React, vue更是让这门语言如虎添翼, 一种语言支不支持模块化, 完全决定了不同的命运, 在模块化之前维护几个js文件会非常头疼, 模块化解决了这个问题, 也直接导致JavaScript的社区变得非常活跃. 现在你能轻松的找到成熟的类库和包来解决手头的问题.
说完优点,再来看它的缺点.
由于Javascript运行在浏览器上, 用户可以看到这些代码, 因此它存在安全隐患. 黑客可以通过很多方式, 让用户执行提前设计好的恶意代码, 获取用户信息和替用户执行某些操作, 所以在开发之前, 要把潜在的安全问题和解决办法搞清楚: 比如XSS攻击, CSRF攻击,SQL注入以及相关的防范等等.
上面提到, 由于javascript的多种浏览器的支持和近些年的飞速发展, 导致不同浏览器可能对它的执行方式不尽相同. 旧版本的浏览器很可能不支持新的javascript语言功能. 因此需要在开发的时候,考虑相关的兼容性问题.
Javascript调试起来不方便. 因为它的执行环境大部分时候是浏览器, 所以没办法很高效得像其它语言一样在IDE里调试, 大部分时间只能根据控制台里的错误, 定位到源码并揣测错误发生的可能性.
浏览器里Javascript是被单线程执行的, 这往往导致一招不慎满盘皆输, 所以在开发的时候, 我们更要做好异常处理.
总结一下, 这期我们介绍了Javascript的优缺点, 它前端开发的立命根本, 也不仅限于前端开发, 优秀的开发社区赋予了这个语言更多的可能性.