我的邮箱里有一个 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 的起源,从亚里士多德到布尔到丹尼斯里奇,都没什么有趣的发现。但是考据的乐趣并不是找到问题的终极答案,而是过程中发现的各种花边消息(这其实是一直以来在没有找到答案的时候为了安慰自己说的话)。叹号的故事还是蛮有意思的。
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!