JS的语言特征
前言
JS是一种弱类型的,解释型的脚本语言
弱类型和强类型
弱类型?
定义:在定义变量的时候,我们可以为变量赋值任何数据,变量的数据类型不是固定死的,这样的类型叫做弱类型。
var a = 10;
a = "abc";
a = [];
a = function(){};
优点:
弱类型使用简单,更灵活多变。
缺点:
因为不包含类型信息,所以在代码的上下文中,可能会进行隐含的类型转换,比如把字符串转整型,整型转字符串,这样会稍损性能,并且可能会不符合程序本意。注:(typescript可以稍微弥补一些)
强类型?
定义:在声明变量的时候,一旦给变量赋值,那么变量的数据类型就已经确定,之后如果要给该变量赋值其他类型的数据,需要进行强制数据类型转换。
int a = 10;
a = "10";
优点:
强类型语言由于类型之间不可隐式转换而更加可靠。(更严谨)
缺点:
强类型语言要求完全显示转换,开发效率低。
解释型和编译型
解释型?
定义:程序不需要编译,程序在运行时才翻译成机器语言,每执 行一次都要翻译一次。因此效率比较低。在运行程序的时候才翻译,专门有一个解释器去进行翻译,每个语句都是执行的时候才翻译。
优点:解释型语言可以写完一行,或一小段程序之后,马上运行,马上调试,快速的测试自己的想法。并且跨平台性好。
缺点:效率比较低。
编译型?
定义:程序在执行之前需要一个专门的编译过程,把程序编译成 为机器语言的文件,运行时不需要重新翻译,直接使用编译的结果就行了。
优点:编译型的语言在运行期间一般是要比解释型的要快一点,因为编译型的语言已经是机器码,无需要再进行解释为机器码。程序执行效率高些。
缺点:跨平台性差。