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 2
|
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 1
如果了解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 1
@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
|