fe-interview
fe-interview copied to clipboard
[js] 第182天 为什么说js是弱类型语言,它的优缺点分别是什么?
第182天 为什么说js是弱类型语言,它的优缺点分别是什么?
因为在定义变量时,不需要定它的类型,比如整型,浮点型,字符型之类的
弱类型语言:表现在定义变量的时候不用说明变量的类型,能够类型推断。 优点在于书写方便? 缺点:在于不知道数据类型,可读性不高,不便与维护。在typescript中做了优化,增加了泛型,接口,等强类型语言的概念。
这个题目可以让我们进行充分的思考,通过弱类型语言
这几个字,我们可以进行如下拓展:
静态语言
:我们把在使用之前就需要确认其变量数据类型的称为静态语言。
动态语言
:我们把在运行过程中需要检查数据类型的语言称为动态语言。通常把偷偷进行类型转换的操作成为
隐式类型转换
:支持因此类型转换的语言称为
弱类型语言
,不支持隐式类型转换的语言称为强类型语言
。
编译型语言
:通常都会对源代码进行编译,生成可以执行的二进制代码,执行的是编译后的结果。(C语言,C++、Object-C、swift)
解释型语言
:通常不用对源代码进行编译,一般是通过解释器载入脚本后运行。由于每个语句都是执行的时候才进行解释翻译,这样解释性语言每次执行就要翻译一次,效率相对要低。(JavaScript、Python、Erlang、PHP、Perl、Ruby)
由此我们知道,JS属于弱类型、动态、解释型语言。
拓展
这个题目可以让我们进行充分的思考,通过
弱类型语言
这几个字,我们可以进行如下拓展:
静态语言
:我们把在使用之前就需要确认其变量数据类型的称为静态语言。动态语言
:我们把在运行过程中需要检查数据类型的语言称为动态语言。 通常把偷偷进行类型转换的操作成为隐式类型转换
: 支持因此类型转换的语言称为弱类型语言
,不支持隐式类型转换的语言称为强类型语言
。编译型语言
:通常都会对源代码进行编译,生成可以执行的二进制代码,执行的是编译后的结果。(C语言,C++、Object-C、swift)解释型语言
:通常不用对源代码进行编译,一般是通过解释器载入脚本后运行。由于每个语句都是执行的时候才进行解释翻译,这样解释性语言每次执行就要翻译一次,效率相对要低。(JavaScript、Python、Erlang、PHP、Perl、Ruby)由此我们知道,JS属于弱类型、动态、解释型语言。
拓展
弱(强)类型语言、静(动)态语言、编译(解释)型语言概念总览 支持因此类型转换的语言称为弱类型语言,不支持隐式类型转换的语言称为强类型语言。 我觉得这句话有问题,c++中也有隐式类型转换。但是c++不是弱类型语言。
因为js在声明变量的时候不用说明变量的类型,能够类型判断。 缺点:因为不知道类型,可读性较差,不便维护,后续的ts里做了优化。