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. 修复 GitLab 的 CI Runner 提示找不到 pwsh 执行文件

    本文告诉大家如何修复使用 GitLab 的 Runner 做 CI 时提示 "pwsh": executable file not found in %PATH% 错误 有两个方法 ...

  2. Oracle和达梦:获取更新随机时间sql

    需求 1.修改数据库中表的创建.更新时间,日期固定,时间随机(日期也可以随机): 2.拿到这些sql去数据库执行就行了. 前提 -- 生成8-12间的随机数(小数) SELECT DBMS_RANDO ...

  3. .NET开源、功能强大、跨平台的图表库 - LiveCharts2

    前言 今天大姚给大家分享一个.NET开源(MIT License).功能强大.简单.灵活.跨平台的图表.地图和仪表库:LiveCharts2.   项目介绍 LiveCharts2是一个.NET开源. ...

  4. 06. rails gem 安装mysql

    修改Gamefile Gamefile 里添加 gem 'mysql2' 执行命令行 bundle 可以看到下图片上已经安装好依赖了 修改配置文件 修改config/database.yml文件 # ...

  5. 26ObjectStream

    ObjectStream ObjectOutputStream 用于将属性和内容保存到文件中,保存数据类型和值,即序列化,该流为处理流 static和transient修饰的属性无法序列化,切被序列化 ...

  6. 使用DP-Modeler、ModelFun模方软件修复实景三维模型教程

    P-Modeler   DP-Modeler是武汉天际航自主研发的一款集精细化单体建模与Mesh网格模型修饰于一体的软件.支持三维模型一键水面修复.道路置平.建筑局部修饰.删除底部碎片.植被处理.桥隧 ...

  7. cesium问题-关于不同时间模型亮度不一致问题

    项目中遇到发布的bim模型在当天不同时间的模型亮度发生变化,尤其是晚上的时候会出现模型很暗.尴了个尬,一度怀疑是自己眼睛有问题,连续几天出现同样的情况,想到可能是时间问题导致的模型亮度不同,于是测试了 ...

  8. UnityShader数学基础篇

    Mathf Mathf和Math 1.Math是C#中封装好的用于数学计算的工具类,位于System命名空间中. 2.Mathf是Unity中封装好的用于数学计算的工具结构体,位于UnityEngin ...

  9. 提升WordPress网站加载速度的8个小技巧

    提升WordPress网站加载速度是至关重要的,它不仅可以提高用户体验,还有助于SEO排名.以下是提升WordPress网站加载速度的8个小技巧,希望能帮助到大家. 优化图片: 使用适当大小和格式的图 ...

  10. java练习项目——记账本

    包含登录.注册.记账.每日账单查看.每月报表.添加记账类型这些功能.数据存储采用的是txt文档+xml文档.程序是一个控制台程序,用IntelliJ IDEA+jdk8开发.涉及到的知识有List集合 ...