js总体来说,是个不错的语言,最大的好处的是简单。

但这个基于es6的一些js也有一些非常怪异的写法,这是非常令人憎恶的地方。

c++总体上也算不错,但为什么不是很受欢迎,因为它把自己搞得太复杂了,复杂到已经不太适合编写过于大型的系统。

当我们看到这些复杂的语法的时候,难免有点癫狂。

我们必须推崇简单而规范的语法,这非常有利于开发和维护,一些奇奇怪怪的语法,对于一些非常精通的人而言,并不算是个问题。

但这些语法的存在,复杂化了编译器,也弄糊涂了维护人员的脑子。

所以,我常常告诫我的同事们:当能够用简单通用方式写代码的时候,千万不要过分炫技,这些炫技对于工程维护并没有什么特别的好处,除了

好像看起来起来更加简洁。但除了更加简洁,并没有其它的特别好处, 更快?还是更好理解维护?更容易学习?

说穿了,这些复杂的语法更多时候,只是一个障眼法,一个语法糖!

所以,我只喜欢类似pascal,TypeScript之类的语言!

c++在于它把自己搞得太复杂了,js的问题则在于把自己搞得太随意。

我个人认为,如果使用js编写大量的代码,则应该舍弃其中随意的地方,而保留其严谨整齐的方面,否则调试和查找问题是够呛的!

废话少说,现在列出鄙人认为js令人厌恶的地方。

一、数据类型

  1. 无法规定类型
  2. 可以随意转换

所以,在某些情况下,可能会是一个巨大的隐患。此外某些情况下也不是很利于阅读。

为了便于阅读,我们有时候在定义变量的时候,需要使用固定的前缀来表示类型,例如sName,iQty.

不过这个好像有ts来解决了。

二、内部模型

前端代码越写越复杂,所以浏览器的内存模型也只好越做越复杂,这一些都是为了性能考虑。

不过这种复杂性也是可以容忍的,某些情况下!

三、奇怪的简写

如果我们总之使用规范严谨的写法,那么很多时候程序的维护和升级就不需要那么复杂,大家也可以节约更多的时间用于其它方面:

理解业务,编写更加精美的函数,复杂的算法。

通过简写是否可以节约时间了?可以,不过仅仅是纯粹打特定篇幅字的时间!

四、没有包或者作用域

这个对于习惯后端的而言,觉得还是很难受的!

从长远来看,js一定会发展为类似后端的语言,毕竟我们是为了做工程,不是为了逗乐子,或者用棍子大大路边的杂草,严谨一点还是好更好的!

原生js或者是es中让人厌恶的一些地方的更多相关文章

  1. 原生js实现jquery库中部分事件的功能(jquery库封装二)

    继续昨天的封装,今天的部分继昨天选择器之后实现了css样式的获取和添加,attr的获取和添加和一部分事件的封装:只是我自己的理解,不妥之处欢迎大家在评论中提出,相互学习,共同提高 /** * Crea ...

  2. 原生js实现jquery库中选择器的功能(jquery库封装一)

    今天是2017.1.1,新的一天,新的一年,新的一年里继续夯实基础知识,在工作中多些项目,多思考,多总结,前端是不断更新,在更新的过程中也是发现乐趣和挑战自我的过程,希望年轻的我和年轻的javascr ...

  3. 分享一个基于长连接+长轮询+原生的JS及AJAX实现的多人在线即时交流聊天室

    实现网页版的在线聊天室的方法有很多,在没有来到HTML5之前,常见的有:定时轮询.长连接+长轮询.基于第三方插件(如FLASH的Socket),而如果是HTML5,则比较简单,可以直接使用WebSoc ...

  4. C#保留2位小数几种场景总结 游标遍历所有数据库循环执行修改数据库的sql命令 原生js轮盘抽奖实例分析(幸运大转盘抽奖) javascript中的typeof和类型判断

    C#保留2位小数几种场景总结   场景1: C#保留2位小数,.ToString("f2")确实可以,但是如果这个数字本来就小数点后面三位比如1.253,那么转化之后就会变成1.2 ...

  5. 原生JS中apply()方法的一个值得注意的用法

    今天在学习vue.js的render时,遇到需要重复构造多个同类型对象的问题,在这里发现原生JS中apply()方法的一个特殊的用法: var ary = Array.apply(null, { &q ...

  6. 原生js中slice()方法和splice()区别

    slice()方法和splice()方法都是原生js中对数组操作的方法. slice(),返回一个新的数组,该方法可从已有的数组中返回选定的元素.例如:arrObject(start,end),sta ...

  7. ThinkPHP 中使用 IS_AJAX 判断原生 JS 中的 Ajax 出现问题

    问题: 在 ThinkPHP 中使用原生 js 发起 Ajax 请求的时候.在控制器无法使用 IS_AJAX 进行判断.而使用 jQuery 中的 ajax 是没有问题的. 在ThinkPHP中.有一 ...

  8. 【面试篇】寒冬求职季之你必须要懂的原生JS(中)

    互联网寒冬之际,各大公司都缩减了HC,甚至是采取了“裁员”措施,在这样的大环境之下,想要获得一份更好的工作,必然需要付出更多的努力. 一年前,也许你搞清楚闭包,this,原型链,就能获得认可.但是现在 ...

  9. 使用call、apply和bind解决js中烦人的this,事件绑定时的this和传参问题

    1.什么是this 在JavaScript中this可以是全局对象.当前对象或者任意对象,这完全取决于函数的调用方式,this 绑定的对象即函数执行的上下文环境(context). 为了帮助理解,让我 ...

  10. 原生js(form)验证,可以借鉴下思路,应用到工作中

    我在工作中时常使用form验证,在目前的公司做的表单验证用的angular的form组件,对于一个有追求的前端,或者应用在移动端写个form验证,引入angular或者jquery组件等验证,难免显得 ...

随机推荐

  1. [Go] CORS 支持多个 origin 访问的思路 (Access-Control-Allow-Origin 部分)

    以下为局部伪代码,仅供参考: var allowOrigin string allowOrigins := config.AppConf.Get("middleware.cors.allow ...

  2. 魔方OA 数据字典

    https://gitee.com/mojocube/mc-oa/blob/master/Data/%E6%95%B0%E6%8D%AE%E5%BA%93%E8%84%9A%E6%9C%AC.sql ...

  3. 开源相机管理库Aravis例程学习(四)——multiple-acquisition-signal

    目录 简介 例程代码 函数说明 g_main_loop_new g_main_loop_run g_main_loop_quit g_signal_connect arv_stream_set_emi ...

  4. STM32中的看门狗

    先复制一段度娘的东西: 在由单片机构成的微型计算机系统中,由于单片机的工作常常会受到来自外界电磁场的干扰,造成程序的跑飞,而陷入死循环,程序的正常运行被打断,由单片机控制的系统无法继续工作,会造成整个 ...

  5. SpringBoot使用JSch操作Linux

    推荐使用Hutool的Jsch工具包(它用的连接池的技术) 一.SSH远程连接服务器 SSH更多见:http://t.csdnimg.cn/PrsNv 推荐连接工具:FinalShell.Xshell ...

  6. To Be Vegetable

    求满足下述条件的 \(n\) 阶排列 \(a\) 的数目:对每个 \(i\),要么 \(a_i-i\le a_j-j+d\) 对所有 \(j\gt i\) 成立,要么 \(a_i\ge a_j\) 对 ...

  7. golang中三种定时器的实现方式及周期定时

    一.定时器的创建 golang中定时器有三种实现方式,分别是time.sleep.time.after.time.Timer 其中time.after和time.Timer需要对通道进行释放才能达到定 ...

  8. JavaScript实现全选选项框的功能和鼠标划入出现下拉框的功能--JavaScript实例集锦(初学)

    有一些论坛,文章后台编辑都会出现选择框的操作. 1.实现选项框全选和取消全选的功能: 代码实现: <!DOCTYPE html> <html> <head> < ...

  9. 带你彻底搞懂递归时间复杂度的Master公式

    1. 什么是Master公式 1.1 Master公式的定义 Master公式,又称为Master定理或主定理,是分析递归算法时间复杂度的一种重要工具,尤其适用于具有分治结构的递归算法. \[T(n) ...

  10. pgsql安装与主从配置搭建

    一:安装环境 查看一下安装环境:cat /etc/centos-release CentOS Linux release 7.7.1908 (Core) 二:软件下载 https://www.post ...