原生js或者是es中让人厌恶的一些地方
js总体来说,是个不错的语言,最大的好处的是简单。
但这个基于es6的一些js也有一些非常怪异的写法,这是非常令人憎恶的地方。
c++总体上也算不错,但为什么不是很受欢迎,因为它把自己搞得太复杂了,复杂到已经不太适合编写过于大型的系统。
当我们看到这些复杂的语法的时候,难免有点癫狂。
我们必须推崇简单而规范的语法,这非常有利于开发和维护,一些奇奇怪怪的语法,对于一些非常精通的人而言,并不算是个问题。
但这些语法的存在,复杂化了编译器,也弄糊涂了维护人员的脑子。
所以,我常常告诫我的同事们:当能够用简单通用方式写代码的时候,千万不要过分炫技,这些炫技对于工程维护并没有什么特别的好处,除了
好像看起来起来更加简洁。但除了更加简洁,并没有其它的特别好处, 更快?还是更好理解维护?更容易学习?
说穿了,这些复杂的语法更多时候,只是一个障眼法,一个语法糖!
所以,我只喜欢类似pascal,TypeScript之类的语言!
c++在于它把自己搞得太复杂了,js的问题则在于把自己搞得太随意。
我个人认为,如果使用js编写大量的代码,则应该舍弃其中随意的地方,而保留其严谨整齐的方面,否则调试和查找问题是够呛的!
废话少说,现在列出鄙人认为js令人厌恶的地方。
一、数据类型
- 无法规定类型
- 可以随意转换
所以,在某些情况下,可能会是一个巨大的隐患。此外某些情况下也不是很利于阅读。
为了便于阅读,我们有时候在定义变量的时候,需要使用固定的前缀来表示类型,例如sName,iQty.
不过这个好像有ts来解决了。
二、内部模型
前端代码越写越复杂,所以浏览器的内存模型也只好越做越复杂,这一些都是为了性能考虑。
不过这种复杂性也是可以容忍的,某些情况下!
三、奇怪的简写
如果我们总之使用规范严谨的写法,那么很多时候程序的维护和升级就不需要那么复杂,大家也可以节约更多的时间用于其它方面:
理解业务,编写更加精美的函数,复杂的算法。
通过简写是否可以节约时间了?可以,不过仅仅是纯粹打特定篇幅字的时间!
四、没有包或者作用域
这个对于习惯后端的而言,觉得还是很难受的!
从长远来看,js一定会发展为类似后端的语言,毕竟我们是为了做工程,不是为了逗乐子,或者用棍子大大路边的杂草,严谨一点还是好更好的!
原生js或者是es中让人厌恶的一些地方的更多相关文章
- 原生js实现jquery库中部分事件的功能(jquery库封装二)
继续昨天的封装,今天的部分继昨天选择器之后实现了css样式的获取和添加,attr的获取和添加和一部分事件的封装:只是我自己的理解,不妥之处欢迎大家在评论中提出,相互学习,共同提高 /** * Crea ...
- 原生js实现jquery库中选择器的功能(jquery库封装一)
今天是2017.1.1,新的一天,新的一年,新的一年里继续夯实基础知识,在工作中多些项目,多思考,多总结,前端是不断更新,在更新的过程中也是发现乐趣和挑战自我的过程,希望年轻的我和年轻的javascr ...
- 分享一个基于长连接+长轮询+原生的JS及AJAX实现的多人在线即时交流聊天室
实现网页版的在线聊天室的方法有很多,在没有来到HTML5之前,常见的有:定时轮询.长连接+长轮询.基于第三方插件(如FLASH的Socket),而如果是HTML5,则比较简单,可以直接使用WebSoc ...
- C#保留2位小数几种场景总结 游标遍历所有数据库循环执行修改数据库的sql命令 原生js轮盘抽奖实例分析(幸运大转盘抽奖) javascript中的typeof和类型判断
C#保留2位小数几种场景总结 场景1: C#保留2位小数,.ToString("f2")确实可以,但是如果这个数字本来就小数点后面三位比如1.253,那么转化之后就会变成1.2 ...
- 原生JS中apply()方法的一个值得注意的用法
今天在学习vue.js的render时,遇到需要重复构造多个同类型对象的问题,在这里发现原生JS中apply()方法的一个特殊的用法: var ary = Array.apply(null, { &q ...
- 原生js中slice()方法和splice()区别
slice()方法和splice()方法都是原生js中对数组操作的方法. slice(),返回一个新的数组,该方法可从已有的数组中返回选定的元素.例如:arrObject(start,end),sta ...
- ThinkPHP 中使用 IS_AJAX 判断原生 JS 中的 Ajax 出现问题
问题: 在 ThinkPHP 中使用原生 js 发起 Ajax 请求的时候.在控制器无法使用 IS_AJAX 进行判断.而使用 jQuery 中的 ajax 是没有问题的. 在ThinkPHP中.有一 ...
- 【面试篇】寒冬求职季之你必须要懂的原生JS(中)
互联网寒冬之际,各大公司都缩减了HC,甚至是采取了“裁员”措施,在这样的大环境之下,想要获得一份更好的工作,必然需要付出更多的努力. 一年前,也许你搞清楚闭包,this,原型链,就能获得认可.但是现在 ...
- 使用call、apply和bind解决js中烦人的this,事件绑定时的this和传参问题
1.什么是this 在JavaScript中this可以是全局对象.当前对象或者任意对象,这完全取决于函数的调用方式,this 绑定的对象即函数执行的上下文环境(context). 为了帮助理解,让我 ...
- 原生js(form)验证,可以借鉴下思路,应用到工作中
我在工作中时常使用form验证,在目前的公司做的表单验证用的angular的form组件,对于一个有追求的前端,或者应用在移动端写个form验证,引入angular或者jquery组件等验证,难免显得 ...
随机推荐
- Microsoft.Maui.Graphics.Skia 使用 DrawString 绘制文本的坐标问题
本文记录使用 Microsoft.Maui.Graphics.Skia 的 DrawString 进行绘制文本,不同的重载方法绘制的文本的坐标不同的问题 本文开始之前,预期已经准备好了环境和基础项目, ...
- C语言的指针不能与数组之前的内存进行比较
标准允许指向数组元素的指针与指向数组最后一个元素后面的那个内存位置的指针进行比较,但是不允许与指向数组第一个元素之前的那个内存位置的指针进行比较. 案例一 #define DATAMAX 5 int ...
- 前端使用 Konva 实现可视化设计器(8)- 预览框
请大家动动小手,给我一个免费的 Star 吧~ 大家如果发现了明显的 Bug,可以提 Issue 哟~ 这一章我们实现一个预览框,实时.可交互定位的. github源码 gitee源码 示例地址 预览 ...
- Go语言—值类型和引用类型
一.值类型 定义 变量直接存储的值,内存通常在栈中分配: var i = 5 -> i-->5 应用 int.float.bool.string.数组.struct 二.引用类型 1. 定 ...
- vim简明文档
替换 替换当前行第一个 :s/vivian/sky/ 替换当前行第一个 vivian 为 sky 从当前行替换到最后一行 :%s/vivian/sky/g 替换所有行中 vivian 为 sky 查找 ...
- tomcat(2)- tomcat目录结果和配置文件
目录 1 Tomcat目录结构 2 Tomcat的配置文件 2.1 server.xml配置文件 2.2 server.xml配置文件结构 2.3 WEB应用自动部署 2.4 配置文件各个组件的关联 ...
- python教程1.1:环境安装+代码编辑器安装
1.环境安装 打开官⽹ https://www.python.org/downloads/windows/ 下载中 下载后执⾏,点击下⼀步安装就⾏,注意选择添加Python到当前⽤户环境变量 2.代码 ...
- 前端scale负数表示翻转
https://blog.csdn.net/wang_yu_shun/article/details/121299208 极力推荐这个博主写的,前端有关负数的小技巧
- Java基础 韩顺平老师的 常用类 的部分笔记
459,八大Wrapper类 包装类的分类 1) 针对八种基本数据类型相应的引用类型-包装类 2) 有了类的特点, 就可以调用类中的方法. 460,装箱和拆箱 package com.hspedu.W ...
- VSCode 圈复杂度插件 CodeMetrics
前言 圈复杂度(Cyclomatic Complexity)是一种代码复杂度的衡量标准.它可以用来衡量一个模块判定结构的复杂程度,数量上表现为独立现行路径条数,也可理解为覆盖所有的可能情况最少使用的测 ...