HTML5 属性值加不加引号?

在 HTML4 的时候,语法是很宽松的,HTML 的属性值(attribute value)既可以加引号也可以不加。到了 XHTML 的时候,为了更好地兼容 XML 格式,又引入了严格的语法,规定属性值必须用双引号括起来。眼下 XHTML 大势已去,我们终于可以忘掉那些繁琐的限制了,HTML5 回归了宽松的语法,属性值加单引号、双引号还是不加,全看程序员的喜好。你随便写,剩下的只要交给浏览器去解析。

选择不加引号,的确能省下键盘敲击次数,还能省下一部分字节,这是好的一方面,不过也并不是在所有情况下都可以省略引号,例如:

<p class=important warning>

这个 p 元素在浏览器看来,class 值为 important,另外还有一个属性 warning,尽管不是 W3C 标准里的属性,但浏览器会把它当做一个自定义的布尔属性。所以如果属性值里含有空格时必须加引号。另外,含有以下字符时都必须括起来:单引号')、双引号")、大小于号<>)、等号=)、反引号`)。

如果你是不加引号党,就要注意这几个坑。不加引号有不加引号的好处,但如果保持一个用引号的习惯,就不需要费时间去考虑以上这些问题。主要看个人或团队的习惯。

阅读全文 »

最美 – 江美琪

“那些好听的翻唱”系列之《最美》,翻唱的是羽泉的。

我非常喜欢这个。

全世界失眠 – 范玮琪

“那些好听的翻唱”系列之范范范玮琪。怎么有点口吃的感觉……

翻唱自陈奕迅。

2004 – 卫兰

感觉我找的这些好听的翻唱可以归为一个系列了。就叫“那些好听的翻唱”吧,今天这首,是卫兰的《2004》。

翻的是《两个人的烟火》。

JavaScript 浮点运算的误差问题

JavaScript 中,有浮点数值参与运算的时候,经常会产生误差。比如你测试 0.1 + 0.2 == 0.3,会得到 false。这是因为 JavaScript 采用了 IEEE 754 标准定义的格式来存储数字,采用了这种格式的编程语言都会存在这个问题,并不是 JavaScript 特有。

比如计算 0.1 + 0.2,你其实会得到 0.30000000000000004。所以在 JavaScript 中有浮点数参与运算时,应该尽量避免 0.1 + 0.2 == 0.3 这样的测试。

要解决这个问题,一种方法就是利用 toFixedtoFixed 是 Number 类型的一个原型方法,可以用字符串表示数字,同时指定小数位数。传入的参数可以是 0 到 20 间的整数,表示小数部分的长度。

(0.1).toFixed(4); // "0.1000"

toFixed 方法会自动进行四舍五入以符合指定的小数位数,因此正好可以用来解决浮点运算的误差问题。首先对数值调用 toFixed 方法,限制小数部分长度,比如 10,此时误差基本已经修正,然后再用 parseFloat 方法或加号操作符转换回数字。示例:

(0.1 + 0.2).toFixed(10); // "0.3000000000"
parseFloat((0.1 + 0.2).toFixed(10)); // 得到 0.3
+((0.1 + 0.2).toFixed(10)); // 功能同上
+((0.1 + 0.2).toFixed(10)) == 0.3 // 返回 true
flight