日期:2014-05-16  浏览次数:20407 次

jquery/attr参数隐性转换问题
<input type="checkbox" checked="checked" value='30' id='tree'/><input type="text">
<script>
  $("#tree").attr('checked',0);
</script>


传0不能改变checked,false可以,undefined不行。
js 里面,0,undefined, 不就是false吗?


后来我试过 “!!0”,“!!undefined”可以改变checked值了,
为什么我直接传参就不行?



------解决方案--------------------
js 里面,0,undefined, 不就是false吗?

不好意思 不是

!!undefined是因为 进行了2次求值运算 并且根据运算规则 转换成了bool值

所以 以后此类问题 请动手测试 千万不要 模糊的假定
测试很简单的
alert(undefined == false)
alert(!!undefined == false)
alert(0 == false)
alert(0 === false)