
1 Mark24 OP Javascript引擎在行末自动添加分号的机制,产生的坑 如果你想的是这样子的代码: function foo() { return { name: 'foo' }; } 如果你不小心,多了换行了,像这样 或者这就是你心目中的“多行代码”的样子 function foo() { return { name: 'foo' }; } 其实会变成: function foo() { return; { name: 'foo' }; } 正确的姿势是: function foo() { return { // 这里不会自动加分号,因为{表示语句尚未结束 name: 'foo' }; } |
2 RoshanWu 2015-07-31 14:57:37 +08:00 |
3 pelloz 2015-07-31 14:58:19 +08:00 数值精度不够,服务器返回的long类型的id会丢失精度,导致错误。最好直接使用String类型传数据。 |
4 ychongsaytc 2015-07-31 14:59:11 +08:00 Date |
6 thinkmore 2015-07-31 15:41:23 +08:00 **@RoshanWu** thanks |
7 learnshare 2015-07-31 15:53:55 +08:00 |
8 est 2015-07-31 15:57:41 +08:00 |
9 sumhat 2015-07-31 16:17:08 +08:00 for 循环中的 closure 有问题,比如: for (var i in elements) { var element = elements[i]; doSomething(element, function() { console.log(element.name); } } log 出来永远是最后一个。 |
11 mouhong 2015-07-31 16:48:09 +08:00 @sumhat 这其实不能算 Closure 的坑,是 Javascript 早期版本没有块级作用域的坑,如果用 strict mode 里的 let element = elements[i],就不会有这个问题。 |
12 forest520 2015-07-31 16:52:22 +08:00 nodejs的parseInt("000300"),猜猜结果是什么? |
13 kenshinhu 2015-07-31 16:52:34 +08:00 还有值拷贝的坑 |
14 morethansean 2015-07-31 16:52:54 +08:00 @sumhat 这不是问题吧……这不是 feature 么…… |
15 bramblex 2015-07-31 16:57:56 +08:00 各种坑……以及各种坑我自己造的工具…… https://github.com/bramblex/BlxJSTK |
16 civet 2015-07-31 16:58:09 +08:00 ['10', '10', '10'].map(parseInt) |
17 neetrorschach 2015-07-31 17:31:07 +08:00 好像js的正则不支持零宽断言 |
19 ChefIsAwesome 2015-07-31 17:43:20 +08:00 via Android (Num).toFixed(n) 居然返回的是字符串 |
20 zhea55 2015-07-31 17:50:29 +08:00 |
21 bramblex 2015-07-31 19:08:24 +08:00 @neetrorschach 也不支持命名分组 |
23 sneezry 2015-07-31 20:00:22 +08:00 via iPhone 0.1+0.2==0.3 |
25 dong3580 2015-07-31 21:27:58 +08:00 @ChefIsAwesome 这个是大坑啊。。。计算精度问题, |
26 MntCw 2015-07-31 22:13:15 +08:00 如果了解Javascript解析/编译原理,就不会有这些问题。原理读得太少,上手就是操作,等发现问题了就把这些归类为坑。 |
27 dant 2015-07-31 22:25:30 +08:00 [1,2,3].map(parseInt) //=> [ 1, NaN, NaN ] [1,2,3].map(function(x){return parseInt(x);}) //=> [ 1, 2, 3 ] |
28 kenshinhu 2015-08-01 01:12:16 +08:00 @zonghua 我记得有下在搞monngoose 时,返回的结果是Document类型,直接赋值一个变量时,再修改里的的元素是失效的,这个算是 值拷贝的问题吗? |
29 GuangXiN 2015-08-01 01:30:40 +08:00 @sneezry 0.1+0.2==0.3返回false不是js独有的坑呀,这是二进制无法精确表示小数导致的,C语言也有这个坑,PHP也有,Python也存在。 |
30 dcoder 2015-08-01 02:17:38 +08:00 <a href="http://stackoverflow.com/questions/4886632/what-does-var-that-this-mean-in-Javascript">this that ... </a> |
33 oscarzhao 2015-08-01 14:35:17 +08:00 拷贝对象时,JSON.parse(JSON.stringify(obj))比较蛋疼 JSON.stringify 用在 map上面会输出为 [], 直接打印能显示出来 |
35 Mark24 OP Javascript排序坑 会把数字先转换为字符串,再用字符串去排序 …… 反人类 |
36 Mark24 OP 补充楼上,高清图片url:" "具体描述 廖雪峰Javascript教程,sort篇 http://www.liaoxuefeng.com/wiki/001434446689867b27157e896e74d51a89c25cc8b43bdb3000/0014351226817991a9c08f1ec0a45c99b9209bcfc71b8f6000 |
37 mingyun 2015-09-04 23:40:59 +08:00 Json.stringify ()会默认忽略 undefined 的 key |