[知乎]那些年踩过的坑

本文深入探讨了JavaScript编程中常见的陷阱与优化技巧,通过实例分析帮助开发者避免常见错误,提高代码质量和性能。
作者:zccst

2014-12-11

toFixed 保留2位小数 4舍5入


判断一个数是否是数字?
a === +a

取正(+), 减零 (-0), 乘一,(*1),除以一(/1),取负(-,这个得到相反的值)。
console.log(+'123') //输出 123
console.log(-'123') //输出 -123
console.log('123' - 0) //输出 123
console.log('123'*1) //输出 123
console.log('123'/1) //输出 123

console.log(+true) //输出1
console.log(+false) //输出0

其他两个
踩过的坑2-JS精确计算时的bug
[url]http://zccst.iteye.com/blog/2165590[/url]

踩过的坑3-parseInt, parseFloat, Number
[url]http://zccst.iteye.com/blog/2165597[/url]


一、winter
parseInt 不写第二个参数,结果被"08"、"09"坑哭
element.innerHTML = text,结果所有大于号小于号&都坑了,然后还被XSS
setTimeout("a="+a+";alert(a);",1000),拿变量toString当Literal,结果除了数字都坑了
alert("<?=a>"),跟后端语言配合,不考虑字符串里的\和"等特殊字符
new Date("2014-11-11 00:00:00"),使用不符合标准的日期字符串,听天由命
for(var i in array) /*……*/ ; 图省事for in遍历数组,有人改了数组prototype就出来奇怪东西了
在onload里location.href = url; 做无条件跳转逻辑的时候不用replace,导致浏览器后退退不回去
var param = location.href.match(/a=([^\&\?]+)/)[1]; 滥用正则,使用不严谨的正则匹配url参数,结果把 baba xaxa sba都给匹配进去了
$("input.2b").attr("value",2333333) 拿attribute当property用,结果人家手动输入以后就坑了
a=0.1, b=0.2,element.innerText = a+b;,浮点数显示前不调toFixed,结果出来了奇怪的东西
var c = 100 + $("input.2b")[0].value; 没用parseInt或者Number,结果变成字符串相加了
1.toString() 点前面不加空格,结果语法错误导致页面全挂

(function(){
//do something
})()

(function(){
//do something
})()

不写分号,导致粘到上一行去了


二、庄泽进

['a'] == ['a'];//false
['a'] === ['a'];//false


:before和:after要有content才有用,起码是content: ‘’;

如果您觉得本文的内容对您的学习有所帮助,您可以微信:
[img]http://dl2.iteye.com/upload/attachment/0109/0668/fb266dfa-95ca-3d09-b41e-5f04a19ba9a1.png[/img]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值