作为一个略懂 JS 的不写 JS 的开发,抬手随手写个简单的 JS,小坑真是一个接一个啊……

2016-03-04 11:13:32 +08:00
 realpg
一个页面,四个 input 年 1 月 1 年 2 月 2
要求年月 1 比年月 2 早 js 进行初步过滤防止输错 不需要防止恶意 只是个简单过滤
方便自己盲输录入错误

挂了个 jquery 用 val()取出四个值 ay am by bm 顺手写了个这个判断:
if ((ay * 12 + am) - (by * 12 + bm) > 0) playAlertMusic();

然后就愉快的录数据 结果,最后数据库汇总,还是有前面比后面小的……
百撕不得骑姐,按照那个数据重新录入,卧槽果然能通过验证

结果,一个一个变量 debug ,粗略猜到了是字符串数字问题, ay*12 就变成 integer ,跟一个 string int 做加法,竟然不会自动把 string int 转成 int ……

这 js 解释器啊啊啊啊。感觉大部分脚本语言都能比较好的处理好这种问题吧
4668 次点击
所在节点    程序员
33 条回复
xuboying
2016-03-04 12:40:36 +08:00
无论是 perl5 还是 perl6 都不使用加号做拼接,避免这种低级错误
xcodebuild
2016-03-04 12:41:53 +08:00
@realpg 建议还是找本书看看, js 要是按照『见猪跑』的方法写遍地都是坑,你举的这个例子完全不是事。

事实上也没几个语言是见过猪跑就能写不踩坑的,大概 Java 算一个?
realpg
2016-03-04 12:44:44 +08:00
@codefalling
没啥了,我也不是干这个的,其实就是我要录一堆数据,怕盲打录错,用 chrome 的 console 注入了个判断。
而且出现问题第一时间我也马上明白了是哪里有问题。

真要写这个,测试啊,设计严谨性啊,都会好好处理,而且估计也用不上我写啥复杂的 js 。
bramblex
2016-03-04 13:10:56 +08:00
@codefalling

在这种问题上强类型的优越性就体现出来了。入股再配上纯函数,那基本不会出逻辑以外的错误
aprikyblue
2016-03-04 13:52:11 +08:00
依赖隐性转换,还是字符串和数字运算。。怪 js 咯
jin5354
2016-03-04 14:12:33 +08:00
连隐式类型转换的规则都不清楚,还有自信说略懂?
aaaron7
2016-03-04 14:21:14 +08:00
动态类型一时爽,重构起来火葬场
iscraft
2016-03-04 14:40:49 +08:00
码奴的道路其实是一场雷区内的前行
大大前天无聊 在 rpi2 中 port 装了 php7 nginx+fpm 想看下
结果 200 ok 但页面完全空白 只是一个 phpinfo 都运行不了
百思不得其解 搞到凌晨 5 点仍无结果 放弃 睡觉去
隔了一天第三天早上 突然灵机一动
php.ini 里看了一眼 short_open_tag 没打开......
ragnaroks
2016-03-04 14:57:02 +08:00
@aaaron7
+∞
HadesYang
2016-03-04 16:02:26 +08:00
Jaylee
2016-03-04 16:13:03 +08:00
@realpg 完全没学过就来就 js 坑?
zodiac1111
2016-03-05 00:04:25 +08:00
xuyinan503
2016-03-05 09:38:27 +08:00

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

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

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

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

© 2021 V2EX