`
zccst
  • 浏览: 3322819 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

[知乎]那些年踩过的坑

阅读更多
作者: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
http://zccst.iteye.com/blog/2165590

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



一、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: ‘’;

如果您觉得本文的内容对您的学习有所帮助,您可以微信:
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics