为啥 js 语言里面 那么喜欢嵌套,匿名

2023-05-01 16:34:42 +08:00
 yagamil

作为一个后端,算法的开发者,平时会写点简单的页面。

不过看着 js,vue 的一些语法,感觉可读性非常差,函数喜欢用匿名的,在一个函数传参里面,把函数作为参数传入,导致的是,这个函数的参数 入参 非常冗长,不用 IDE ,根本不清楚这个匿名函数在哪里结束,因为里面可能还嵌套里其他参数。

好好定义一个函数名,设置一个好的名称,好好写,不行么?

还有链式调用有点泛滥。

这样做的原因是做什么?

5044 次点击
所在节点    程序员
50 条回复
GoldenSheep
2023-05-01 16:42:31 +08:00
不懂,看 js 给人一种精神升华的感觉
jisuowei
2023-05-01 16:49:48 +08:00
众所周知,编程的时候有一半的时间都耗费在起名字上(狗头
codehz
2023-05-01 16:55:25 +08:00
还不是因为主流的事件处理方式(浏览器提供的,不是你想改就能改的),要求提供一个函数做回调,这种情况下,写一个函数名意味着函数声明的位置和使用的位置就有一定距离,原地写 function 也有太长的问题
还有就是,箭头函数不会有 this 的问题,不需要外面设置一个 var self = this 这样的写法(虽然现在大家都不用 class 了,不存在 this 的问题)
虽然我觉得还是视角的问题,把回调看作延续就会比较自然了
hello2090
2023-05-01 16:59:18 +08:00
你完全可以按照你喜欢的不匿名,不链式来写啊
churchill
2023-05-01 17:02:33 +08:00
第一点个人认为不是问题,其他语言像 c++ 一样也喜欢用 lamda ,参数再配上 auto 关键字,没有一个好的代码提示工具基本没法读
第二点不能同意更多,但有的人认为方法链可读性更高
wdssmq
2023-05-01 17:02:51 +08:00
PHP: 可变函数 - Manual
https://www.php.net/manual/zh/functions.variable-functions.php

就,,感觉差不多,匿名还能省个名字。。
Leviathann
2023-05-01 17:03:13 +08:00
你用 java7 的?
shyangs
2023-05-01 17:05:17 +08:00
你先說你入門的語言和用的最多的語言是什麼.

母語會影響一個人的思維的。
veike
2023-05-01 17:28:31 +08:00
js 里就是有大量的匿名,不过我看很多文档都推荐给每个函数起一个名字。
还有链式调用滥用,到什么程度算滥用呢?
大部分编程语言都能实现链式操作,js 里大量的链式调用我认为可读性并没有很糟糕。
并且可读性和每个人的书写习惯有关。jetbrains 的 IDE 里有每行最多多少个字符的辅助线,不知道大家会参照那个辅助线来写代码不
surfwave
2023-05-01 17:47:14 +08:00
后端的习惯了 OO 的,要上手前端 js 这块,还是需要学学函数式编程,习惯了就好了
DOLLOR
2023-05-01 17:54:54 +08:00
别人也可以反过来问,
为什么明明一个 function 就能解决的事情,某些编程语言非要写成一个 class 把方法封装起来,然后需要调用的时候,还要 new 一遍,再调用里面的方法。
Trello
2023-05-01 18:08:27 +08:00
哦豁,说到嵌套,那绝对比不过 flutter 鹅心,吐了。
caqiko
2023-05-01 18:14:49 +08:00
匿名的剪头回调函数应该是 js 推荐的写法
避免暴露太多不必要的对象给全局
Aloento
2023-05-01 18:18:00 +08:00
毕竟是一个没有命名空间隔离的语言
rocmax
2023-05-01 18:18:54 +08:00
seers
2023-05-01 18:19:59 +08:00
虽然可读性差,但是写起来感觉爽飞,尤其是过几个月回头看自己写的,酸爽
ahhtree
2023-05-01 18:22:12 +08:00
链式调用指的一般是函数式编程,函数式编程可读性可是很好的(屎坑除外)
makelove
2023-05-01 18:23:53 +08:00
写了多年 python 和 js,我最讨厌 python 的一点是没有多行匿名函数
humbass
2023-05-01 18:24:03 +08:00
我是先学 javascript ,后面学的 C

当你发现 C 的复杂参数只可以传指针时,就瞬间明白 Javascript 的好处。 只可惜各互联网大佬不给力,无法做出一种直接可以编译 javacript 的方法.
Al0rid4l
2023-05-01 18:30:33 +08:00
黑点动态类型啥的就算了, lambda 表达式也来黑? 这真黑不动吧

你怎么不去问丘奇为什么要发明 lambda 演算呢

不得不讲上来就跟着谭浩强学 C 是容易把人学傻, 以为自己懂了所谓计算机的本质

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/936734

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX