!important 的困惑
我的邮箱里有一个 label 是“!important”,当初是取义自 CSS 的 !important,想借用“!important”的“重要”之义来标注重要邮件。后来就后悔了,由于 !important 这种叹号前置的格式像极了叹号作为逻辑非运算符的用法(为啥这句怎么读怎么像病句),每次用这个 label 的时候,都会有种在说这封邮件其实并不重要的感觉。 这种困惑最终蔓延到写 CSS 的过程中!终于有一天我被这叹号折磨得无法忍受了!这 !important 到底是怎么来的!用叹号表示否定又是怎么来的!
// 常用叹号好伤神,刚刚打着打着情绪就莫名其妙激动起来了…
对 !important 这种古怪表达方式困惑的人当然不只我一个,stackoverflow上有个人也提了类似的问题:“为什么 CSS 和 C-based (的)语言中叹号的涵义相反?”他还问道:“除了 CSS,还有什么语言是用叹号表达肯定而非否定的呢?”(随后有人提醒他,自然语言就是其中一种…) 回答很有趣,是这样说的:
在 !important 中,叹号更像是一个转义符,和 important 是一体的,而非操作符。它本身并不像你说的那样带有肯定的涵义。……选择用叹号的原因有可能是因为在非程序语言中,叹号有获取注意力的作用。或许将它写成 important! 或者 ¡important! 更容易理解,只不过 !important 更容易解析,打起来也更方便。
虽然这段解释很合理,但还是没法解决 !important 造成混淆的问题。改成 !unimportant 肯定更离谱了(除非你是用 More CSS,谢谢 @Nemo_A 告诉我这么有意思的东西,注意看页尾的 copyright 信息),有人提议说把 !important 改成 !!important 就可以都说得通了,这想法太天才了,建议 More CSS 可以把这个建议纳入下一版。
// 我不知道怎么过渡了。请大家把这里想像成自然和谐的过渡语句。
带着开始的那些感叹开始寻找叹号表示 not 的起源,从亚里士多德到布尔到丹尼斯里奇,都没什么有趣的发现。但是考据的乐趣并不是找到问题的终极答案,而是过程中发现的各种花边消息(这其实是一直以来在没有找到答案的时候为了安慰自己说的话)。叹号的故事还是蛮有意思的。
关于叹号的 !一切
- ! 的起源:一种说法是说来源于拉丁语中对愉悦的感叹(io),”i”写到”o”的上面。
- ! 可以念作 “Bang”,因为漫画中经常使用对话泡泡里一个 ! 来表示枪声。
- 最早的打字机键盘中并没有叹号。叹号的打法是先打一个句点“.”,再退回去,补打一撇“’”,拼成一个“!”。叹号出现在打字机键盘上是在 1970s,大约是 QWERTY 键盘发明的一个世纪之后。
- 含有叹号的地名:
- 魁北克有一个地名叫 Saint-Louis-du-Ha! Ha!。
- 另外魁北克还有两个海湾和一条河的名字是以 ha! ha! 结尾的。
- 英国有一个小镇叫 Westward Ho!,取名自 Charles Kingsley 的小说Westward Ho!。
- 美国哈密尔顿 (Hamilton) 在1986年为了宣传改名为 Hamilton!
- 雅虎 (Yahoo!) 之所以在 Yahoo 后面加了一个叹号,是因为 Yahoo 已经被 EBSCO 注册了,加一个叹号在后面实属无奈之举。
- New York Times 评论专栏编辑 David Shipley 和 Hyperion Books 的主编 Will Schwalbe 合著了一本电子邮件撰写指南,名字大概叫做 “Send: The Essential guide to Email for Office and Home“。书中指出电子邮件撰写中,使用叹号可以更好地表达期待和友好。比如 “Thanks!!!” 会比 “Thanks.” 更友好。
- F. Scott Fitzgerald(《了不起的盖茨比》作者)反对使用叹号。他认为用叹号就好比笑自己讲的笑话一样。// 谁去翻翻《了不起的盖茨比》,里面真的没叹号吗?
Cut out all those exclamation points. An exclamation point is like laughing at your own jokes.
– F. Scott Fitzgerald
// 要是我,会更喜欢这样说:
Cut out all those exclamation points! An exclamation point is like laughing at your own jokes!
– F. Scott Fitzgerald!
最后,贴个两年前关于叹号的笑话吧(其实通篇没有一个叹号出现):