JavaScript 中的弱类型,动态类型

您所在的位置:网站首页 nodejs属于什么语言 JavaScript 中的弱类型,动态类型

JavaScript 中的弱类型,动态类型

2024-01-20 16:59| 来源: 网络整理| 查看: 265

点击这里获得更好的阅读体验

JavaScript 是一门弱类型(weakly typed),动态类型(dynamically typed)的编程语言,其中它弱类型的特性让人又爱又恨,既带来了一些简洁的语法,在一定程度上提升了开发者的编码速度,也带来了一些坑,增加了项目维护的难度。本文介绍 JavaScript 中弱类型的一些体现方面,看看我们能如何更好的利用它。

编程语言的类型

编程语言可以被分为弱类型或强类型,静态类型或动态类型,如 JavaScript 就属于弱类型,动态类型的语言,下面说说我对这两组概念的理解:

强弱类型

强弱类型描述了编程语言对于混入不同数据类型的值进行运算时的处理方式。强类型语言对类型的要求很严格,很强势,当遇到参与运算的类型不同或不符合规则时,往往会编译失败;而弱类型语言对类型的要求不严格,很松散,在编译阶段时遇到数据类型有问题时,往往会进行隐式转换(type coercion),这使得开发者在编写代码时对数据类型的处理可以更随意。

举一些例子,先看下面这行 Python 代码:

'x' + 3

执行后会报错 TypeError: can only concatenate str (not "int") to str,因为参与字符串连接运算的第二个操作数不符合规则。所以 Python 是强类型的语言。

再看类似代码在 JavaScript 中的表现:

console.log("x" + 3);

执行后控制台会打印 x3,因为编译器将 3 隐式转换成了 '3',使得字符串连接操作可以进行。所以 JavaScript 是弱类型的语言。

静态动态类型

静态动态类型描述了编程语言进行类型检查(type checking)的阶段,静态类型语言在编译阶段进行检查类型,动态类型语言在运行阶段(run-time)进行检查类型。

举一些例子,这是一段 C/C++ 的代码

int a = 18; a = "haha";

这段代码在编译时会报错 Compiler Error: '=': cannot convert from 'const char [5]' to 'int',因为 a 已经是 int 类型了,无法变成数组(const char [])类型。所以 C/C++ 是静态类型语言。

再看类似代码在 JavaScript 中的表现

let a = 18;


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3