【Web前端基础】弱类型语言的优缺点

2020-12-17 10:17发布

11条回答
summer
2楼 · 2020-12-17 13:14

弱类型语言的优势,开发简便;部署简单
劣势,难以通过编译发现bug;性能较低,难以优化编译提升性能;拍错困难;开发时难以做出正确的语言提示;

IT学习
3楼 · 2020-12-17 14:11

1,强弱类型的判别;

          按照计算机语言的类型系统的设计方式,可以分为强类型和弱类型两种。二者之间的区别,就在于计算时是否可以不同类型之间对使用者透明地隐式转换。从使用者的角度来看,如果一个语言可以隐式转换它的所有类型,那么它的变量、表达式等在参与运算时,即使类型不正确,也能通过隐式转换来得到正确地类型,这对使用者而言,就好像所有类型都能进行所有运算一样,所以这样的语言被称作弱类型。与此相对,强类型语言的类型之间不一定有隐式转换。
强类型如c,在c中的算术转换中对于所有比int小的类型,包括char, signed char, unsigned char, short, unsigned short,首先会提升为int类型。
 在进行运算时,以表达式中最长类型为主,将其他类型位据均转换成该类型,如:

(1)若运算数中有double型或float型,则其他类型数据均转换成double类型进行运算。(2)若运算数中最长的类型为long型.则其他类型数均转换成long型数。(3)若运算数中最长类型为int型,则char型也转换成int型进行运算。算术转换是在运算过程中自动完成的。

2,js弱类型的体现

 一般规律是,约束越强越不容易出错,但编写程序时也越麻烦。在JavaScript中,因为约束比较弱,所以容易出现这种错误:最简单的例子:

 var a =200; var b ="1"; var c= a + b;

你可能期望c是201,但实际上它是"2001",这个错误在强类型语言中决不会出现。然而正是因为JavaScript没有这些约束,所以可以很方便地拼接数字和字符串类型。

再比如下面这个例子:var a = '11';a = a - '';alert(typeof a);// -->number“-”可以是一元运算符(取负),也可以是二元(减法运算)在循环语句中(if,while)中,一个Object对象可以隐式的转换从BOOLEAN值。var obj = {name:'jack'}if(obj){    //do more}比较难以发现的是在alert()函数中。String.prototype.fn = function(){return this};var a = 'hello';alert(typeof a.fn()); //-->objectalert(a.fn()); //-->hello

我们知道this可以理解成当前类的实例对象,既然是对象那么typeof a.fn()自然返回是object了。
关键是最后的alert(a.fn()),a.fn()返回的明明是对象,但却隐式的转换成了字符串“hello”显示。


20200921文 - 做更棒的自己!
4楼 · 2020-12-17 14:25

一高一低 强类型语言属高 弱类型语言属低 也可以说没有区别都是语言

小叮当
5楼 · 2020-12-17 14:46

拿C++和php打比,php强语言,c++弱语言.

1)语法有区别,最明显的弱语言不需要设定变量类型,强语言需要;

2)底层上,弱语言是解释执行,强语言是编译执行(java另说,生成中间字节码);

3)性能上差距太大,强语言大大快于php;

4)开发效率,弱语言要快于强语言,所以web开发弱语言很高效;

5)学习曲线不同,弱语言简单好学但是精通的太少了,很多强语言的特性都没有或者牵强的模拟实现;强语言入门门槛高,学不容易,语言特性多,逼着你都学会,另外由于传统软件行业对编程的要求本来就高于web行业导致写传统软件的人的编程素质要远远强于web行业的;

6)最佳的应用场景不同,php只能做web,c++做底层 软件,也可以做web(但是没人这么做)

我用最通俗的话告诉你了区别,但是不仅限于这些.

所以无论做软件还是web,建议强语言(c++ java等)和弱语言(php python perl ruby等)都至少懂一种,另外单独的像js这种基于原型的客户端脚本语言也必须要会!


芒果
6楼 · 2020-12-17 16:45

JavaScript的特点

1. 一种解释性执行的脚本语言。

2. 一种基于对象的脚本语言。

3. 一种简单弱类型脚本语言。

4. 一种相对安全脚本语言。

5. 一种事件驱动脚本语言。

6. 一种跨平台性脚本语言。

   因此,JavaScript是一种新的描述语言,其可以被嵌入到HTML文件中。JavaScript语言可以做到响应使用者的需求事件(例如表单的输入),而不需要任何的网络来回传输资料。所以当一位使用者输入一项资料时,此资料数据不用经过传给服务器(server)处理再传回来的过程,而直接可以被客户端(client)的应用程序所处理。

JavaScript的优缺点

1. JavaScript的优点:

 1)JavaScript减少网络传输。

 2)JavaScript方便操纵HTML对象。

 3)JavaScript支持分布式运算。

2. JavaScript的局限性:

 1)各浏览器厂商对JavaScript支持程度不同。

 2)“Web安全性”对JavaScript一些功能牺牲。

想当熊猫
7楼 · 2020-12-17 19:55

弱类型语言也称为弱类型定义语言,与强类型定义相反,像vb,php等就属于弱类型语言。


JavaScript的特点

  (1)。一种解释性执行的脚本语言。

  同其他脚本语言一样,JavaScript也是一种解释性语言,其提供了一个非常方便的开发过程。JavaScript的语法基本结构形式与C、C++、Java十分类似。但在使用前,不像这些语言需要先编译,而是在程序运行过程中被逐行地解释。JavaScript与HTML标识结合在一起,从而方便用户的使用操作。

  (2)。一种基于对象的脚本语言。

  其也可以被看作是一种面向对象的语言,这意味着JavaScript能运用其已经创建的对象。因此,许多功能可以来自于脚本环境中对象的方法与脚本的相互作用。

  (3)。一种简单弱类型脚本语言。

  其简单性主要体现在:首先,JavaScript是一种基于Java基本语句和控制流之上的简单而紧凑的设计,从而对于使用者学习Java或其他C语系的编程语言是一种非常好的过渡,而对于具有C语系编程功底的程序员来说,JavaScript上手也非常容易;其次,其变量类型是采用弱类型,并未使用严格的数据类型。

  (4)。一种相对安全脚本语言。

  JavaScript作为一种安全性语言,不被允许访问本地的硬盘,且不能将数据存入服务器,不允许对网络文档进行修改和删除,只能通过浏览器实现信息浏览或动态交互。从而有效地防止数据的丢失或对系统的非法访问。

  (5)。一种事件驱动脚本语言。

  JavaScript对用户的响应,是以事件驱动的方式进行的。在网页(Web Page)中执行了某种操作所产生的动作,被称为“事件”(Event)。例如按下鼠标、移动窗口、选择菜单等都可以被视为事件。当事件发生后,可能会引起相应的事件响应,执行某些对应的脚本,这种机制被称为“事件驱动”。

  (6)。一种跨平台性脚本语言。

  JavaScript依赖于浏览器本身,与操作环境无关,只要计算机能运行浏览器,并支持JavaScript的浏览器,就可正确执行,从而实现了“编写一次,走遍天下”的梦想。


JavaScript的优缺点

  (1).JavaScript的优点:

  《1》.JavaScript减少网络传输。

  在JavaScript这样的用户端脚本语言出现之前,传统的数据提交和验证工作均由用户端浏览器通过网络传输到服务器上进行。如果数据量很大,这对于网络和服务器的资源来说实在是一种无形的浪费。而使用JavaScript就可以在客户端进行数据验证。

  《2》.JavaScript方便操纵HTML对象。

  JavaScript可以方便地操纵各种页面中的对象,用户可以使用JavaScript来控制页面中各个元素的外观、状态甚至运行方式,JavaScript可以根据用户的需要“定制”浏览器,从而使网页更加友好。

  《3》.JavaScript支持分布式运算。

  JavaScript可以使多种任务仅在用户端就可以完成,而不需要网络和服务器的参与,从而支持分布式的运算和处理。

  (2).JavaScript的局限性:

  《1》。各浏览器厂商对JavaScript支持程度不同。

  目前在互联网上有很多浏览器,如Firefox、Internet Explorer、Opera等,但每种浏览器支持JavaScript的程度是不一样的,不同的浏览器在浏览一个带有JavaScript脚本的主页时,由于对JavaScript的支持稍有不同,其效果会有一定的差距,有时甚至会显示不出来。

  《2》。“Web安全性”对JavaScript一些功能牺牲。

  当把JavaScript的一个设计目标设定为“Web安全性”时,就需要牺牲JavaScript的一些功能。因此,纯粹的JavaScript将不能打开、读写和保存用户计算机上的文件。其有权访问的唯一信息就是该JavaScript所嵌入的那个Web主页中的信息,简言之,JavaScript将只存在于它自己的小小世界—Web主页里。



是你的小甜心呀
8楼 · 2020-12-17 20:04

弱类型或者动态的语言很容易做到“让正确的代码通过编译”,或者说“不求有功,但求无过”。这么多年来基本上也就被做到头了,比如python,js,lua之类的,写起来手感差不多,什么东西都往字典里装,大家都是凑合着用,反正程序员可以996,命都是不值钱的。

强类型的语言要做好非常难,因为它更侧重于“让错误的程序编译失败”,目前主流的语言都有很多false negative,很多时候明知程序是对的却无法通过编译。典型的就是golang这种不断用代码生成和interface{}来绕过编译器的反面例子。

我认为这个问题下所谓“强类型语言的缺点”很多时候其实是“类型系统不够强的缺点”。题中所说的例子按理说应该很容易用trait解决。至于各种转型的扭曲代码,往往是因为类型系统只支持一两种固定写法,无法表达更强的抽象所致。





樱田妮妮NiNi
9楼 · 2020-12-17 20:46

 弱类型语言也称为弱类型定义语言。与强类型定义相反。像vb,php等就属于弱类型语言·

  例如:在vbscript中,可以将字符串 12 和整数 3 进行连接得到字符串 123,然后可以把它看成整数 123,而不需要显式转换。


相关问题推荐

  • 回答 120

    相对前几年来说,要高上不少了,毕竟入行的人也是越来越多了,基础的工作对应想要参与的人群基数越来越大,但是对于高端人才的需求还是很多,人才还是相对稀缺性的。所以,想要学web或者其他技术也一样,别等,别观望。web前端就业方向特别多包括web前端开发...

  • 回答 25

    相对定位和绝对定位是定位的两种表现形式,区别如下:一、主体不同1、相对定位:是设置为相对定位的元素框会偏移某个距离。2、绝对定位:absolute 脱离文档流,通过 top,bottom,left,right 定位。二、特点不同1、相对定位:在使用相对定位时,无论是否进行移...

  • 抓包是什么意思?2020-04-01 17:36
    回答 7
    已采纳

    抓包(packet capture)就是将网络传输发送与接收的数据包进行截获、重发、编辑、转存等操作,也用来检查网络安全。抓包也经常被用来进行数据截取等。抓包可以通过抓包工具来查看网络数据包内容。通过对抓获的数据包进行分析,可以得到有用的信息。目前流行的...

  • 回答 89

    常用的前端框架有Bootstrap框架、React框架、Vue框架、Angular框架、Foundation框架等等

  • 回答 65
    已采纳

    前端是目的就业前景非常不错的一个计算机技术,但是自学的话还是有一定难度的,网络上自学是碎片化的,同时互联网技术跟新换代快,自己的话比较吃力也学习不到最新的技术。

  • SSR 是什么意思?2020-03-20 18:56
    回答 6

    SSR就是一台服务器,可以利用 SSR 在远程的服务器上配置 SSR,使其能够成为 SSR 节点,这样本地电脑或者其它设备利用 SSR 节点实现 VPN 或者远程上网及游戏加速等方面。ShadowsocksR(简称 SSR)是 Shadowsocks 分支,在 Shadowsocks 的基础上增加了一些数据...

  • 回答 52
    已采纳

    计算机培训方向比较多,建议找适合自己的方向选择培训编程类:JAVA、WEB、Python、C/C++、C#等测试类:软件测试运维类:云计算、网络安全设计类:UI设计、3D建模等

  • 回答 11

    1、代码判断xAxis: {type: 'time',splitLine: {show: false},interval: 3600, // 设置x轴时间间隔axisLabel: {formatter: function(value, index) {return liangTools.unix2hm(value)}}},首先要把xAxis 显示类型设置成time,然后设置对应X轴......

  • 回答 8

    HTML5 + CSS + JavaScript 开发 跨平台重用代码 

  • 回答 4

    采用rem单位自动响应,并提供独有栅格化系统快速定义宽高、边距节省css代码量,同时总结各大型移动端网页,提供一套ui颜色搭配规范,尺寸规范,字体规范等。

  • 回答 10

    iView UI、ioni、SUI

  • 回答 6

     jQTouch 

  • 回答 4

    如果只是普通的移动端用vue react 或者dva 如果是要编译成小程序什么的或者混生 就用uni-app(对应vue语法)taro(对应react) 或者纯原生 这个没有限制的,自己怎么舒服怎么来

  • 回答 4

    因为可以运用在网页和小程序的开饭中,而且开源,用着便宜,企业都很喜欢

  • 回答 10

    一、Visual Studio Code下载地址:https://code.visualstudio.com/微软在2015年4月30日Build 开发者大会上正式宣布了 Visual Studio Code 项目:一个运行于 Mac OS X、Windows和 Linux 之上的,针对于编写现代 Web 和云应用的跨平台源代码编辑器。Visual Stud...

  • 回答 9

    jQuery自带淡入淡出效果 https://www.w3school.com.cn/jquery/jquery_fade.asp 看看这个 

没有解决我的问题,去提问