JavaScript的特点有哪些
来源:未知
编辑:佚名
时间:2021-11-23
解释型语言
JavaScript 是一种解释型语言,和解释型语言相对的是编译型语言。解释型语言直接在运行环境中执行代码,所以一般来说,与编译型语言相比,解释型语言的开发更为容易。特别是 JavaScript,其运行环境是已经普及的浏览器,所以能够很容易地尝试开发。这是其他程序设计语言所不能比拟的。解释型语言的劣势在于,其运行速度通常都会慢于编译型语言,不过这也只是理论上的情况。现在,解释型语言和编译型语言之间的界线正在变得越来越模糊。编译型语言在有了足够快速的编译器和功能强大的开发环境之后,也能实现和解释型语言相匹敌的开发难易度。同时,解释型语言由于使用了 JIT(Just In Time)这种能够在运行中进行编译的技术,使得运行速度得以改善。如今,在选择程序设计语言时,比起选择编译型语言还是解释型语言,更重要的是考虑语言的设计目的。是为了使开发过程变得轻松还是为了提高执行效率,语言最初的设计理念不同,其性质自 然会有差异。设计 JavaScript 之初,优先考虑的是使开发过程变得轻松,因此提供了多种特性。
类似于 C 和 Java 的语法结构
JavaScript 的语法结构与 C 和 Java 相似。JavaScript 同样有 if 或 while 这类关键字,其语法结也与 C 和 Java 类似。它们乍一看很像,因此有这些语言开发经验的人很容易就能熟悉 JavaScript。不过需要注意的是,它们之间的相似性其实并不如表面看起来的那么强。
动态语言
JavaScript 与 C 和 Java 所不同的一点在于,JavaScript 是一种动态语言,将在之后详述。单从代码的角度看,动态语言的变量和函数是不指定返回值类型的。JavaScript之所以被设计成动态语言,和选择将其设计为解释型语言的理由一样,都是优先考虑了开发难易度的结果。对解释型语言以及动态语言的特 性的喜好虽然见仁见智,但语言本身并没有高下优劣之分。
基于原型的面向对象
解释型动态语言并不少见,现有的较为知名的脚本语言大多都属于这一类型。不过基于原型的面向 对象特性,使得 JavaScript 与它们有所不同。基于原型的面向对象特性和基于类的面向对象特性是有所差别的,在此请先了解这一点即可,更为详细的内容将会在之后详述。目前,被称为面向对象语言的程序 设计语言,大多提供了基于类的面向对象语言功能。JavaScript 虽然并不是第一个采用基于原型的面向对象特性的语言,不过可以说是这类语言中最为著名的。同样,基于原型与基于类的面向对象语言之间的差异,也主要是个人喜好的区别,而并非是孰优孰劣的问题。
字面量的表现能力
字面量的表现能力是 JavaScript 开发生产力得以提高的一个重要原因。在 Perl 之后,很多语言都提供了功能强大的字面量功能。虽然其中表现突出的不止 JavaScript 一种,不过由于它的字面量功能相对来说非常优秀,所以作为语言特点之一列举于此。
函数式编程
最后来介绍一下函数式编程。函数式编程是一种历史悠久,而又在最近颇为热门的话题。函数式编程在面向对象一词诞生以前就已经存在,不过它在很长的一段时间里都被隐藏于过程式编程(面向对象 也是过程式编程的一种)的概念之下。然而现在这种状况正在逐步发生改变,JavaScript 正是这一改变过 程中的一部分。尽管 JavaScript 能直接支持的程序设计范式在本质上还是过程式的,但由于具备了匿名函 数,可以把函数作为对象来使用,所以同时也能够支持函数式编程。
相关文章:
- [前端]如何在 JavaScript 中把字符串转换成数字
- [前端]详解vuex中的this.$store.dispatch方法
- [前端]javascript的call和apply的区别
- [前端]前端一些好学好用的代码规范-git hook+husky + commitlint
- [前端]前端一些好学好用的代码规范-git hook+husky + commitlint
- [前端]Vue3 编写自定义指令插件的示例代码_vue.js
- [前端]React 性能优化之非必要的渲染问题解决_React
- [前端]JavaScript本地存储实现用户名存储案例_javascript技巧
- [前端]vue表单验证rules及validator验证器的使用方法实例_vue.js
- [前端]uniapp微信小程序自定义导航栏的全过程_javascript技巧
相关推荐:
- [前端]Vue3 编写自定义指令插件的示例代码_vue.js
- [前端]vue使用element实现上传图片和修改图片功能_vue.js
- [前端]JS前端架构pnpm构建Monorepo方式管理demo_JavaScript
- [前端]Iconfont不能上传如何维护Icon_React
- [前端]jquery实现手风琴展开效果_jquery
- [前端]js前端实现word excel pdf ppt mp4图片文本等文件预览_JavaScript
- [前端]uniapp实现横屏签字版_javascript技巧
- [前端]微信小程序实现手写签名(签字版)_javascript技巧
- [前端]vue 大文件分片上传(断点续传、并发上传、秒传)_vue.js
- [前端]微信小程序实现日期范围选择_javascript技巧
栏目分类
最新文章
- 如何在 JavaScript 中把字符串转换成数字
- 怎么理解ES6中Proxy及使用场景
- 详解vuex中的this.$store.dispatch方法
- javascript的call和apply的区别
- 为什么要使用Reflect对象
- 前端一些好学好用的代码规范-git hook+husky + commitlint
- 前端一些好学好用的代码规范-git hook+husky + commitlint
- 解决报错Node Sass does not yet support your current environment: Windows 64-bit with Unsupported
- mac安装nvm
- npm husky install .git can not be found解决方案
热门文章
- CSS世界PDF电子版百度云网盘下载
- JavaScript权威指南(第6版)中文版PDF电子版百度云网盘下载
- Web服务 原理与技术[Michael P. Papazoglou]PDF电子版百度云网盘下载[44.7M]
- 基于TypeScript的HTML5游戏开发本科毕业设计PDF电子版百度云网盘下载
- 详解vue修改elementUI的分页组件视图没更新问题
- javascript的call和apply的区别
- WebKit技术内幕朱永盛PDF电子版百度云网盘下载
- JAVASCRIPT语言精髓与编程实践.周爱民.扫描版PDF电子版百度云网盘下载
- 精彩绝伦的CSS[Eric A. Meyer]PDF电子版百度云网盘下载[25.8M]
- HTML5与CSS3基础教程(第8版)[Elizabeth Castro]PDF电子版百度云网盘下载[72M]