栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

What A F**king/Sweety Langue

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

What A F**king/Sweety Langue

大侠武功卓绝,视野开阔,会写18种语言的Hello World,最近在吭哧吭哧写前端,遇到了不少心灵的激荡:

1. 数组清空

JS里的数组,在写强类型语言的程序员面前,根本不是数组,而是类似Java中List的一个存在。刚写数组时,想要清空数组里所有的元素,本能的想去找clear()方法。可是十分抱歉,JS中数组对象,根本没有那个方法。所以各位老铁们,你们是怎么清空一个数组的?我是里寻他得百度,最后,发现有人通过给数组length属性赋值为0的方式,清空一个数组,一脸懵逼。所以,我现在也是,给数组length属性赋值为0,来清空一个数组。

2. 数组添加另外一个数组的所有元素(扩展运算符)

同上,在Java中,一个列表,添加另外一个列表中所有元素,简直是肌肉反应似地想起list的addAll()方法。可是在JS里,不好意思,木有这个方法,让你一脸懵逼。最终,发现老铁们用的最多的是使用扩展运算符,可是扩展运算符是ES6新增的,很难想象,在ES6之前,老铁们是怎么摆弄的。(注意哦,concat是返回的一个新的数组,我这里本意说的是不改变原来数组引用的情况下拼接两个数组哦。)

3. 扩展运算符作用于对象

这个其实是我的锅,因为第一次使用扩展运算符时,场景是在一个数组中添加另外一个一个数组中所有元素,并且好长时间,只使用了这么一个功能,所以潜意识当中,认为扩展运算符的那三个点(真是不好意思,之前碰到扩展运算符时,都不知道它叫扩展运算符,所以百度的时候,真是搜索的“三个点”),做了类似于循环那样的操作,所以才把元素都添加到别的数组里。直到有一天,我看到了扩展运算符作用于对象上,简直是把我震惊了,所以赶紧又去瞅了下扩展运算符的用法。

4. 创建对象时使用的匿名key

话说老实巴交的大侠,写代码的风格就是一丝不苟。后台让我传个参数,是这样的{name:"zhangsan"},严谨大侠肯定这么写呀:

我天真的以为,世界就是这么,简单美好,原来JS里的对象,跟Java里的Map,一样嘛,key-value嘛哈哈。可是这么写代码的人,你出来给我解释解释,你为什么这么写一样能行,我保证不动手:

5. 关于element-ui中arguments的奇怪现象(el-upload)

elment-ui这个UI框架,使用他的el-upload组件的时候,发现了这么一个奇怪现象。监听它的on-chage方法:on-change="onSelectChange":

发现了没,那个file应该是有name等属性的一个对象,可以你在arguments里,怎么长那个球样?正常的,不应该是这个样子的吗:

6. ref()函数和ref属性奇怪的用法

擦,这个参考我的另外一篇博客吧,本来就是一个在setUp方法中,得到dom ref引用的简单的事情,非要使用一种通过变量名建立联系的这种弱的不能弱的关系来搞。更要命的是,ref()函数的这个用法,官网一个字都没有提及。我觉得我心里的羊驼变得更多了。

7. NODE前端项目导入时,如果目录下是index.js,只写到目录名称即可

这个都无力吐槽了,作为一个新手前端,按着import的路径去找代码,却发现里面只有个index.js,得愣了有三分钟才缓过神来。

8.解构

解构本来挺抽象的了,然后Vue包装的方法,在入参时传入解构,
如:this.$store.dispatch('user/login', this.loginForm),这个方法,就是调用接口里的user/login方法呗,然后屁颠的去看那个js文件了,却发现login({ commit }, userInfo) {}这个方法入参竟然结构了一个commit属性,但是却根本不知道在解构谁(查看源码不方便),入参明明只有一个,你非要结构出来一个凭空出现的,顿时觉得心里的羊驼不够用了。琢磨了一下,也许是$store.dispatch这个方法包装的吧,它底层调用这个方法时,多入参了一个参数。

9.冗余参数对代码可读性的影响

冗余参数对代码可读性的影响:next({ ...firstMenu, replace: true })这句代码中,入参肯定是个对象,但是你这么传,我确实猜不出来,firstMenu这个对象里,到底有啥有用的信息,我也不知道,next这个函数,到底需要啥字段。但是你要这么写呢:next({ path: firstMenu.path, replace: true })我一眼就能看出来,firstMenu里有个path属性啊,你这个next方法,入参里需要有path和replace两个参数,且只需要两个参数。为什么非用第一种方式写呢?代码可读性直线下降啊,这是要靠手撸达到加密混淆的效果啊,简直惨绝人寰。

10. global和window混用

这个是最近才发现的,global和window傻傻分不清楚~~~~~~~~

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/763007.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号