前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >为什么说js是动态类型语言呢?

为什么说js是动态类型语言呢?

作者头像
程序员王天
发布2023-10-18 19:25:07
2830
发布2023-10-18 19:25:07
举报

JavaScript 被称为动态类型语言,是因为它的类型在运行时决定,并且可以在运行时动态改变变量的类型。以下是一些示例来说明 JavaScript 的动态类型特性:

  1. 变量类型的弱化:
代码语言:javascript
复制
let x = 10; // x被推断为number类型
x = "Hello"; // 现在x的类型变为string
x = true; // 这里x的类型变为boolean

在 JavaScript 中,变量的类型可以根据赋值的值自动推断,并且可以在运行时改变变量的类型。

  1. 动态属性:
代码语言:javascript
复制
let person = {
  name: "John",
  age: 30,
};

console.log(person.name); // 输出 "John"

person.name = "Jane";
console.log(person.name); // 输出 "Jane"

person.address = "New York";
console.log(person.address); // 输出 "New York"

在 JavaScript 中,对象的属性可以在运行时动态地添加或修改。

  1. 动态函数参数:
代码语言:javascript
复制
function add(a, b) {
  return a + b;
}

console.log(add(2, 3)); // 输出 5
console.log(add("Hello", "World")); // 输出 "HelloWorld"
console.log(add(2, "Hello")); // 输出 "2Hello"

在 JavaScript 中,函数的参数类型并没有在定义时指定,可以接受不同类型的参数并执行不同的操作。

这些示例展示了 JavaScript 的动态类型特性,变量可以根据赋值动态改变类型,对象的属性可以在运行时动态添加或修改,函数的参数可以接受不同类型的值。这种动态性赋予了 JavaScript 更大的灵活性,在某些情况下也增加了一些开发的挑战。

# ts VS js (动态 vs 静态)

动态类型语言直接运行时对变量检测,无需声明变量类型 静态类型语言需声明变量类型,在编译时对变量类型检测

JavaScript 被称为动态类型语言,因为它在运行时对变量的类型进行推断和处理。这意味着你可以在运行时改变变量的类型,而不需要提前进行类型声明。以下是一些 JavaScript 的动态类型示例:

代码语言:javascript
复制
let variable = 10; // 变量可以被赋予一个数字类型的值
console.log(variable); // 输出: 10

variable = "Hello"; // 变量可以被赋予一个字符串类型的值
console.log(variable); // 输出: Hello

variable = true; // 变量可以被赋予一个布尔类型的值
console.log(variable); // 输出: true

相比之下,TypeScript 是静态类型语言,它在编译时就会对变量的类型进行检查,并在代码中明确声明变量的类型。这使得在开发阶段可以发现潜在的类型错误。以下是一些 TypeScript 的静态类型示例:

代码语言:javascript
复制
let variable: number = 10; // 变量被声明为数字类型
console.log(variable); // 输出: 10

variable = "Hello"; // 错误:不能将字符串类型赋给数字类型的变量

let greeting: string = "Hello";
console.log(greeting); // 输出: Hello

greeting = true; // 错误:不能将布尔类型赋给字符串类型的变量

在这些示例中,你可以看到 TypeScript 代码中的变量需要在声明时指定类型,并且在编译过程中会对类型错误进行检查。如果违反了类型规定,TypeScript 编译器会发出错误提示。

这种类型检查能够在开发阶段捕获潜在的错误,帮助提高代码的健壮性和可靠性,减少运行时错误。

# typeScript 强是型语言还是弱类型语言?

类型系统按照「是否允许隐式类型转换」来分类,可以分为强类型和弱类型。

TypeScript 是完全兼容 JavaScript 的,它不会修改 JavaScript 运行时的特性,所以它们都是弱类型

如下在 typescript 中运行:

代码语言:javascript
复制
console.log(1 + '1');
// 打印出字符串 '11'

python 是强类型语言,如下分别执行 1+1 、1+"1",1+1 相同类型计算正常运行,当运行 number 类型 1 + string 1 时,报错。

image.png
image.png

强制类型转换后 可正常输入

image.png
image.png

typescript 可以借助自身类型系统, 配合 eslint 的代码检查能力,跟进一步向强类型语言靠近。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023年9月30日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • # ts VS js (动态 vs 静态)
  • # typeScript 强是型语言还是弱类型语言?
相关产品与服务
腾讯云代码分析
腾讯云代码分析(内部代号CodeDog)是集众多代码分析工具的云原生、分布式、高性能的代码综合分析跟踪管理平台,其主要功能是持续跟踪分析代码,观测项目代码质量,支撑团队传承代码文化。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档