fe-interview icon indicating copy to clipboard operation
fe-interview copied to clipboard

[js] 第182天 为什么说js是弱类型语言,它的优缺点分别是什么?

Open haizhilin2013 opened this issue 4 years ago • 5 comments

第182天 为什么说js是弱类型语言,它的优缺点分别是什么?

haizhilin2013 avatar Oct 14 '19 20:10 haizhilin2013

因为在定义变量时,不需要定它的类型,比如整型,浮点型,字符型之类的

cxwht avatar Oct 14 '19 23:10 cxwht

弱类型语言:表现在定义变量的时候不用说明变量的类型,能够类型推断。 优点在于书写方便? 缺点:在于不知道数据类型,可读性不高,不便与维护。在typescript中做了优化,增加了泛型,接口,等强类型语言的概念。

mjhcc365 avatar Oct 15 '19 01:10 mjhcc365

这个题目可以让我们进行充分的思考,通过弱类型语言这几个字,我们可以进行如下拓展:

静态语言:我们把在使用之前就需要确认其变量数据类型的称为静态语言。

动态语言:我们把在运行过程中需要检查数据类型的语言称为动态语言。

通常把偷偷进行类型转换的操作成为隐式类型转换

支持因此类型转换的语言称为弱类型语言,不支持隐式类型转换的语言称为强类型语言

编译型语言:通常都会对源代码进行编译,生成可以执行的二进制代码,执行的是编译后的结果。(C语言,C++、Object-C、swift)

解释型语言:通常不用对源代码进行编译,一般是通过解释器载入脚本后运行。由于每个语句都是执行的时候才进行解释翻译,这样解释性语言每次执行就要翻译一次,效率相对要低。(JavaScript、Python、Erlang、PHP、Perl、Ruby)

由此我们知道,JS属于弱类型、动态、解释型语言。

拓展

弱(强)类型语言、静(动)态语言、编译(解释)型语言概念总览

liugezhou avatar Oct 15 '19 02:10 liugezhou

这个题目可以让我们进行充分的思考,通过弱类型语言这几个字,我们可以进行如下拓展:

静态语言:我们把在使用之前就需要确认其变量数据类型的称为静态语言。 动态语言:我们把在运行过程中需要检查数据类型的语言称为动态语言。 通常把偷偷进行类型转换的操作成为隐式类型转换: 支持因此类型转换的语言称为弱类型语言,不支持隐式类型转换的语言称为强类型语言编译型语言:通常都会对源代码进行编译,生成可以执行的二进制代码,执行的是编译后的结果。(C语言,C++、Object-C、swift) 解释型语言:通常不用对源代码进行编译,一般是通过解释器载入脚本后运行。由于每个语句都是执行的时候才进行解释翻译,这样解释性语言每次执行就要翻译一次,效率相对要低。(JavaScript、Python、Erlang、PHP、Perl、Ruby)

由此我们知道,JS属于弱类型、动态、解释型语言。

拓展

弱(强)类型语言、静(动)态语言、编译(解释)型语言概念总览 支持因此类型转换的语言称为弱类型语言,不支持隐式类型转换的语言称为强类型语言。 我觉得这句话有问题,c++中也有隐式类型转换。但是c++不是弱类型语言。

cyj1209 avatar Nov 21 '19 02:11 cyj1209

因为js在声明变量的时候不用说明变量的类型,能够类型判断。 缺点:因为不知道类型,可读性较差,不便维护,后续的ts里做了优化。

xiaoqiangz avatar Aug 09 '22 03:08 xiaoqiangz