检查JavaScript的一些问题

检查JavaScript的一些问题

前言

在提到这个问题之前,我们先聊点别的。首先什么是TypeScript,很明显,它是一种编程语言,是一种免费的开源编程语言,它是由Microsoft创建的,并且由Microsoft Windows 本身维护,它是开源的。

TypeScript是什么,回答这个问题相当简单,但是为什么TypeScript需要一些解释才能理解?为什么要创建TypeScript?如果您想回答这两个问题?那您就需要了解另一种编程语言的一些问题,一种称为JavaScript的相关编程语言。

JavaScript存在的问题?

我认为JavaScript的问题在于,它是在很多年前出于完全不同的目的而创建的,它被创建为一种简单,轻量级,易于学习,易于入门的语言,主要是对HTML进行一些基本的Dom操作,从而测试静态HTML网页,我很确定当时JavaScript的创建者不会想象到JavaScript要驱动如今复杂的应用程序Web,所以发生的情况是JavaScript编程语言有某些新的问题,并且创作者做出了某些决定是在语言产生新的问题采取的,还没有很好地发展,由于这些决定,语言中存在某些问题,毕竟将向您展示该语言中的一些问题,现在只有JavaScript,我将展示JavaScript中的一些问题,请记住这一点,如果您想知道为什么该笔记在TypeScript课程中谈论JavaScript,那么TypeScript会尝试解决很多这些问题,并且有一些功能可以解决这些问题,所以请记住JavaScript中的这些问题,当我们谈论堤坝调节器时,我将立即向您展示这些问题,就像电影中的闪回一样,所以您最好记住这一点,记下来,后面的笔记中我们会看TypeScript是如何解决这些问题的。
所以这里是打开的开发人员的工具,任何一个网页,按F12就可以。
在这里插入图片描述
我的是Chrome浏览器,我可以执行随机JavaScript语句,并让它们向我显示输出,所以让我们看看一些问题,我要讨论的第一个问题是JavaScript缺乏打字系统,没有类型检查,也没有强制打字,例如,假设我有一个var a,这是一个变量,我可以分配数字10,我可以将字符串hello分配给a,一切正常,我无法在这里限制包含属于特定类型的值,我不能说a只需要数字,或者a只需要是字符串
在这里插入图片描述
例如,这个不仅对于原始类型而且对于对象也是一个问题,我可以说a等于一个空对象我可以创建一个不同结构的其他对象的对象并且一切都会正常工作,我可以在这里创建一些其他结构并且javascript不会阻止我。
在这里插入图片描述
另一个问题是,如果您编写了这样的代码,并且实际上打算将a设为仅数字变量,那么您无法检查是否在运行时应用它,并且如果您分配了其他数据类型,则a一切正常。JavaScript不会抱怨,只有当你假设a是一个数字并用它做一些只适用于数字的事情,并且碰巧是其他事情时,JavaScript才会抱怨。

所以当你开发遇到的第二个问题时,它不是很有帮助,我想谈论的是与函数参数有关的事情,现在假设我有一个函数,我要调用它add,它接受两个数字,然后返回这两个数字的总和,这个函数足够简单,我可以分别对a,b变量赋值1,2,并且调用这个函数add,现在它会返回3。
在这里插入图片描述
如果我调用添加一个参数,会发生什么?
在这里插入图片描述
它会正常工作,javascript不会抱怨,但该函数得到另一个数字,因为在没有所需数量的参数的情况下调用函数缺少它,实际上被未定义替换,所以这里add函数试图在未定义中添加1,这就是为什么我们再次得不到数字的原因,这并不是很有帮助,但是你实际上无法阻止JavaScript执行此操作。

有趣的是我实际上可以做,添加一二三,这会很好地工作,三基本上被忽略,所以你可以将不同的参数传递给函数,JavaScript并不关心它,只是选择它需要的东西,然后再次继续默默执行。在这里插入图片描述
当你正在开发一个大型代码库,强制函数的使用者传递正确的参数,我想讨论的第三个问题与对象有关,以及如何无法强制执行对象的结构,假设我有一个战争人员等于假设我给出了一个属性名字,这是一个包含两个属性名字和姓氏的对象,我可以打印该对象,现在我们开始。
在这里插入图片描述
如果我想确保没有人向它添加任何其他属性,现在让我们说,如果有人出现,并且这个person.foo = 10,现在person将有一个名为foo的新属性,并且您实际上无法阻止某人这样做,对象结构松散,没有模版的概念,没有类的概念。
在这里插入图片描述
在JavaScript中,从技术上来说,JavaScript中有一个类的概念,但它并没有真正强制执行成员变量结构,就像我们在其他一些严格基于类的编程语言中所期望的那样,所以这是一个问题,当你是一个你不确定如何构造的对象时,这会成为一个更大的问题,假设有人给你一个对象,并说它里面有这么多的属性,你怎么知道。你真的无法确定唯一的事情,你可以做的是检查这些属性并找出它们是否真的有一个值,你必须检查属性的值是否未定义或者它是其他东西,真的没有一个人可以给你一个对象并保证有一定的值,那里的属性集,这将再次成为一个问题,因为JavaScript中对象的结构松散。

总结

这些问题导致了JavaScript代码在开发大型应用程序时的可维护性和可靠性方面的挑战。这就是为什么TypeScript应运而生的原因。TypeScript通过添加静态类型检查、类、接口等功能来弥补JavaScript的这些缺陷,从而提高了代码的可读性、可维护性和可靠性。通过在开发过程中提供更多的工具和保证,TypeScript使得开发人员能够更轻松地构建和维护复杂的应用程序

  • 16
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值