JavaScript 语言特点

2023-08-31 19:41:59 浏览数 (1)

JavaScript(JS)是一种具有函数优先特性的轻量级、解释型或者说即时编译型的编程语言。

什么是函数优先特性?

在一门语言中,函数可以被当作参数传递给其他函数,可以作为另一个函数的返回值,可以被赋值给一个变量,简而言之,当函数可以当作变量一样使用时,便称这门语言拥有头等函数(First-class Function),或称拥有函数优先特性。

什么是即时编译型?

即时编译也叫及时编译、动态编译、运行时编译,英文是 Just-in-time Complilation,简称 JIT。它是一种在程序执行过程中,将源代码转为机器码的方法,它融合了提前编译(AOT)执行和解释执行的优点,结合了编译代码的效率与解释执行的灵活性。

JavaScript 是一种基于原型、多范式、单线程的动态语言,并且支持面向对象、命令式和声明式(如函数式编程)风格。

什么是多范式?范式指什么?

这里的范式指的是编程思想在语言里的具体实现,例如原型、面向对象、代理(Proxy),基于这三种方式都可以实现对象的继承。

在完成某一件事上(例如对象继续)拥有多种实现方式,便是多范式。

什么是命令式、声明式?

普通的编程,自上而下编写代码,关注与控制每一步实现细节,就是命令式。

而声明式,是指仅描述想要的最终结果是什么,不关注中间过程及实现细节,举一个例子:

代码语言:javascript复制
select * from user where name like 'LIYI'

这不是 SQL 语句吗?

没错!SQL 语句就是一种经典的声明式语法的实现。SQL 只关心想要什么,有什么条件,至于怎么查询,那是数据库引擎的事。

关于 JS 语言的动态特性指什么?

JavaScript 的动态特性包括运行时对象的构造、变量参数列表、函数变量、动态脚本创建(通过 eval)、对象内枚举(通过 for...in 和 Object 工具方法)和源代码恢复(JavaScript 函数会存储其源代码文本,可以使用 toString() 进行检索)。

运行时对象的构造,指用 Object 直接创建对象,一般在编译型语言中,是先定义一个 class,然后才能在运行时实例化的。

变量参数列表,指支持不定参数。

函数变量,指上面提到的函数优先,函数是一等公民,函数也可以作为数据传递。

动态脚本创建,指文本向代码转换,例如使用 eval 将字符串的内容当作 js 代码执行,当然这被视作危险的事情,仅限于在非严格模式下使用。另外,还有 new Function 可以在运行时,从字符串文本中创建可以执行的函数,这种动态脚本创建方式用得较多。

对象内枚举方法 for..in 与 Object 工具方法(例如 assign、create、keys、is、fromEntries 等方法),可以在运行时动态创建对象、动态给对象添加属性、动态遍历已经添加了哪些动态属性,在这些方面体现了动态特性。

源代码恢复,如果小括号内所言,将函数对象换为函数,然后又可以通过 new Function 转合函数,这样就实现了源代码恢复。

- End -

小步快跑,正向反馈;面向未来,不求完美。

与时间做朋友,一同成长。

声明:本文纯人工编写

0 人点赞