Here are all the printable characters, in collating order:
1 | 0x20-0x2F: ! " # $ % & ' ( ) * + , - . / |
The first six rows are the ASCII character set.
Note the ordinary ASCII space (before !
), the ISO Latin-1 non-breaking space (before ¡
) and Latin-1 soft-hyphen (before ®
).
The columns show, in order:
DEC
: the decimal, &#DEC;
-> HTML;HEX
: the hexadecimal, &#xHEX;
-> HTML;HTML
: the HTML Entities;CHR
: ASCII abbreviation, or the charater itself when HTML-printable;MEANING
: the ISO-8859-1 (and ASCII) definition.DEC | HEX | HTML | CHR | MEANING |
---|---|---|---|---|
US-ASCII Entities | ||||
Control Characters (C0) | ||||
000 | 00 | NUL | C0: NULL | |
001 | 01 | SOH | C0: START OF HEADING | |
002 | 02 | STX | C0: START OF TEXT | |
003 | 03 | ETX | C0: END OF TEXT | |
004 | 04 | EOT | C0: END OF TRANSMISSION | |
005 | 05 | ENQ | C0: ENQUIRY | |
006 | 06 | ACK | C0: ACKNOWLEDGE | |
007 | 07 | BEL | C0: BELL | |
008 | 08 | BS | C0: BACKSPACE | |
009 | 09 | HT | C0: CHARACTER TABULATION | |
010 | 0A | NL | C0: LINE FEED (LF) | |
011 | 0B | VT | C0: LINE TABULATION | |
012 | 0C | NP | C0: FORM FEED (FF) | |
013 | 0D | CR | C0: CARRIAGE RETURN (CR) | |
014 | 0E | SO | C0: SHIFT OUT | |
015 | 0F | SI | C0: SHIFT IN | |
016 | 10 | DLE | C0: DATA LINK ESCAPE | |
017 | 11 | DC1 | C0: DEVICE CONTROL ONE | |
018 | 12 | DC2 | C0: DEVICE CONTROL TWO | |
019 | 13 | DC3 | C0: DEVICE CONTROL THREE | |
020 | 14 | DC4 | C0: DEVICE CONTROL FOUR | |
021 | 15 | NAK | C0: NEGATIVE ACKNOWLEDGE | |
022 | 16 | SYN | C0: SYNCHRONOUS IDLE | |
023 | 17 | ETB | C0: END OF TRANSMISSION BLOCK | |
024 | 18 | CAN | C0: CANCEL | |
025 | 19 | EM | C0: END OF MEDIUM | |
026 | 1A | SUB | C0: SUBSTITUTE | |
027 | 1B | ESC | C0: ESCAPE | |
028 | 1C | FS | C0: INFORMATION SEPARATOR FOUR | |
029 | 1D | GS | C0: INFORMATION SEPARATOR THREE | |
030 | 1E | RS | C0: INFORMATION SEPARATOR TWO | |
031 | 1F | US | C0: INFORMATION SEPARATOR ONE | |
Special Characters and Numbers | ||||
032 | 20 | &sp; | ( ) | SPACE |
033 | 21 | ! | (! ) | EXCLAMATION MARK |
034 | 22 | " | (" ) | QUOTATION MARK |
035 | 23 | # | (# ) | NUMBER SIGN |
036 | 24 | $ | ($ ) | DOLLAR SIGN |
037 | 25 | % | (% ) | PERCENT SIGN |
038 | 26 | & | (& ) | AMPERSAND |
039 | 27 | ' | (' ) | APOSTROPHE |
040 | 28 | ( | (( ) | LEFT PARENTHESIS |
041 | 29 | ) | () ) | RIGHT PARENTHESIS |
042 | 2A | * | (* ) | ASTERISK |
043 | 2B | + | (+ ) | PLUS SIGN |
044 | 2C | , | (, ) | COMMA |
045 | 2D | − ‐ | (- ) | HYPHEN-MINUS |
046 | 2E | . | (. ) | FULL STOP |
047 | 2F | / | (/ ) | SOLIDUS |
048 | 30 | (0 ) | DIGIT ZERO | |
049 | 31 | (1 ) | DIGIT ONE | |
050 | 32 | (2 ) | DIGIT TWO | |
051 | 33 | (3 ) | DIGIT THREE | |
052 | 34 | (4 ) | DIGIT FOUR | |
053 | 35 | (5 ) | DIGIT FIVE | |
054 | 36 | (6 ) | DIGIT SIX | |
055 | 37 | (7 ) | DIGIT SEVEN | |
056 | 38 | (8 ) | DIGIT EIGHT | |
057 | 39 | (9 ) | DIGIT NINE | |
058 | 3A | : | (: ) | COLON |
059 | 3B | ; | (; ) | SEMICOLON |
060 | 3C | < | (< ) | LESS-THAN SIGN |
061 | 3D | = | (= ) | EQUALS SIGN |
062 | 3E | > | (> ) | GREATER-THAN SIGN |
063 | 3F | ? | (? ) | QUESTION MARK |
Upper Case Letters | ||||
064 | 40 | @ | (@ ) | COMMERCIAL AT |
065 | 41 | (A ) | LATIN CAPITAL LETTER A | |
066 | 42 | (B ) | LATIN CAPITAL LETTER B | |
067 | 43 | (C ) | LATIN CAPITAL LETTER C | |
068 | 44 | (D ) | LATIN CAPITAL LETTER D | |
069 | 45 | (E ) | LATIN CAPITAL LETTER E | |
070 | 46 | (F ) | LATIN CAPITAL LETTER F | |
071 | 47 | (G ) | LATIN CAPITAL LETTER G | |
072 | 48 | (H ) | LATIN CAPITAL LETTER H | |
073 | 49 | (I ) | LATIN CAPITAL LETTER I | |
074 | 4A | (J ) | LATIN CAPITAL LETTER J | |
075 | 4B | (K ) | LATIN CAPITAL LETTER K | |
076 | 4C | (L ) | LATIN CAPITAL LETTER L | |
077 | 4D | (M ) | LATIN CAPITAL LETTER M | |
078 | 4E | (N ) | LATIN CAPITAL LETTER N | |
079 | 4F | (O ) | LATIN CAPITAL LETTER O | |
080 | 50 | (P ) | LATIN CAPITAL LETTER P | |
081 | 51 | (Q ) | LATIN CAPITAL LETTER Q | |
082 | 52 | (R ) | LATIN CAPITAL LETTER R | |
083 | 53 | (S ) | LATIN CAPITAL LETTER S | |
084 | 54 | (T ) | LATIN CAPITAL LETTER T | |
085 | 55 | (U ) | LATIN CAPITAL LETTER U | |
086 | 56 | (V ) | LATIN CAPITAL LETTER V | |
087 | 57 | (W ) | LATIN CAPITAL LETTER W | |
088 | 58 | (X ) | LATIN CAPITAL LETTER X | |
089 | 59 | (Y ) | LATIN CAPITAL LETTER Y | |
090 | 5A | (Z ) | LATIN CAPITAL LETTER Z | |
091 | 5B | [ | ([ ) | LEFT SQUARE BRACKET |
092 | 5C | \ | (\ ) | REVERSE SOLIDUS |
093 | 5D | ] | (] ) | RIGHT SQUARE BRACKET |
094 | 5E | ˆ | (^ ) | CIRCUMFLEX ACCENT |
095 | 5F | _ ― | (_ ) | LOW LINE |
Lower Case Letters | ||||
096 | 60 | ` | (` ) | GRAVE ACCENT |
097 | 61 | (a ) | LATIN SMALL LETTER A | |
098 | 62 | (b ) | LATIN SMALL LETTER B | |
099 | 63 | (c ) | LATIN SMALL LETTER C | |
100 | 64 | (d ) | LATIN SMALL LETTER D | |
101 | 65 | (e ) | LATIN SMALL LETTER E | |
102 | 66 | (f ) | LATIN SMALL LETTER F | |
103 | 67 | (g ) | LATIN SMALL LETTER G | |
104 | 68 | (h ) | LATIN SMALL LETTER H | |
105 | 69 | (i ) | LATIN SMALL LETTER I | |
106 | 6A | (j ) | LATIN SMALL LETTER J | |
107 | 6B | (k ) | LATIN SMALL LETTER K | |
108 | 6C | (l ) | LATIN SMALL LETTER L | |
109 | 6D | (m ) | LATIN SMALL LETTER M | |
110 | 6E | (n ) | LATIN SMALL LETTER N | |
111 | 6F | (o ) | LATIN SMALL LETTER O | |
112 | 70 | (p ) | LATIN SMALL LETTER P | |
113 | 71 | (q ) | LATIN SMALL LETTER Q | |
114 | 72 | (r ) | LATIN SMALL LETTER R | |
115 | 73 | (s ) | LATIN SMALL LETTER S | |
116 | 74 | (t ) | LATIN SMALL LETTER T | |
117 | 75 | (u ) | LATIN SMALL LETTER U | |
118 | 76 | (v ) | LATIN SMALL LETTER V | |
119 | 77 | (w ) | LATIN SMALL LETTER W | |
120 | 78 | (x ) | LATIN SMALL LETTER X | |
121 | 79 | (y ) | LATIN SMALL LETTER Y | |
122 | 7A | (z ) | LATIN SMALL LETTER Z | |
123 | 7B | { | ({ ) | LEFT CURLY BRACKET |
124 | 7C | | | (| ) | VERTICAL LINE |
125 | 7D | } | (} ) | RIGHT CURLY BRACKET |
126 | 7E | ˜ | (~ ) | TILDE |
127 | 7F | DEL | C0: DELETE | |
ISO 8859-1 Entities (Latin-1 Supplement) | ||||
Extended Control Characters (C1) | ||||
128 | 80 | € | (€ ) | C1: UNUSED |
129 | 81 | ( ) | C1: UNUSED | |
130 | 82 | ‚ | (‚ ) | C1: BREAK PERMITTED HERE |
131 | 83 | ƒ | (ƒ ) | C1: NO BREAK HERE |
132 | 84 | „ | („ ) | C1: UNUSED |
133 | 85 | … | (… ) | C1: NEXT LINE (NEL) |
134 | 86 | † | († ) | C1: START OF SELECTED AREA |
135 | 87 | ‡ | (‡ ) | C1: END OF SELECTED AREA |
136 | 88 | ˆ | (ˆ ) | C1: CHARACTER TABULATION SET |
137 | 89 | ‰ | (‰ ) | C1: CHARACTER TABULATION WITH JUSTIFICATION |
138 | 8A | Š | (Š ) | C1: LINE TABULATION SET |
139 | 8B | ‹ | (‹ ) | C1: PARTIAL LINE FORWARD |
140 | 8C | Œ | (Œ ) | C1: PARTIAL LINE BACKWARD |
141 | 8D | ( ) | C1: REVERSE LINE FEED | |
142 | 8E | Ž | (Ž ) | C1: SINGLE SHIFT TWO |
143 | 8F | ( ) | C1: SINGLE SHIFT THREE | |
144 | 90 | ( ) | C1: DEVICE CONTROL STRING | |
145 | 91 | ‘ | (‘ ) | C1: PRIVATE USE ONE |
146 | 92 | ’ | (’ ) | C1: PRIVATE USE TWO |
147 | 93 | “ | (“ ) | C1: SET TRANSMIT STATE |
148 | 94 | ” | (” ) | C1: CANCEL CHARACTER |
149 | 95 | • | (• ) | C1: MESSAGE WAITING |
150 | 96 | – | (– ) | C1: START OF GUARDED AREA |
151 | 97 | — | (— ) | C1: END OF GUARDED AREA |
152 | 98 | ˜ | (˜ ) | C1: START OF STRING |
153 | 99 | ™ | (™ ) | C1: UNUSED |
154 | 9A | š | (š ) | C1: SINGLE CHARACTER INTRODUCER |
155 | 9B | › | (› ) | C1: CONTROL SEQUENCE INTRODUCER |
156 | 9C | œ | (œ ) | C1: STRING TERMINATOR |
157 | 9D | ( ) | C1: OPERATING SYSTEM COMMAND | |
158 | 9E | ž | (ž ) | C1: PRIVACY MESSAGE |
159 | 9F | Ÿ | (Ÿ ) | C1: APPLICATION PROGRAM COMMAND |
Special Characters | ||||
160 | A0 | | ( ) | NO-BREAK SPACE |
161 | A1 | ¡ | (¡ ) | INVERTED EXCLAMATION MARK |
162 | A2 | ¢ | (¢ ) | CENT SIGN |
163 | A3 | £ | (£ ) | POUND SIGN |
164 | A4 | ¤ | (¤ ) | CURRENCY SIGN |
165 | A5 | ¥ | (¥ ) | YEN SIGN |
166 | A6 | &brkbar; ¦ | (¦ ) | BROKEN BAR |
167 | A7 | § | (§ ) | SECTION SIGN |
168 | A8 | ¨ ¨ | (¨ ) | DIAERESIS |
169 | A9 | © | (© ) | COPYRIGHT SIGN |
170 | AA | ª | (ª ) | FEMININE ORDINAL INDICATOR |
171 | AB | « | (« ) | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK |
172 | AC | ¬ | (¬ ) | NOT SIGN |
173 | AD | ­ | ( ) | SOFT HYPHEN |
174 | AE | ® | (® ) | REGISTERED SIGN |
175 | AF | ¯ &hibar; | (¯ ) | MACRON |
176 | B0 | ° | (° ) | DEGREE SIGN |
177 | B1 | ± | (± ) | PLUS-MINUS SIGN |
178 | B2 | ² | (² ) | SUPERSCRIPT TWO |
179 | B3 | ³ | (³ ) | SUPERSCRIPT THREE |
180 | B4 | ´ | (´ ) | ACUTE ACCENT |
181 | B5 | µ | (µ ) | MICRO SIGN |
182 | B6 | ¶ | (¶ ) | PILCROW SIGN |
183 | B7 | · | (· ) | MIDDLE DOT |
184 | B8 | ¸ | (¸ ) | CEDILLA |
185 | B9 | ¹ | (¹ ) | SUPERSCRIPT ONE |
186 | BA | º | (º ) | MASCULINE ORDINAL INDICATOR |
187 | BB | »; | (» ) | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK |
188 | BC | ¼ | (¼ ) | VULGAR FRACTION ONE QUARTER |
189 | BD | ½ ½ | (½ ) | VULGAR FRACTION ONE HALF |
190 | BE | ¾ | (¾ ) | VULGAR FRACTION THREE QUARTERS |
191 | BF | ¿ | (¿ ) | INVERTED QUESTION MARK |
Upper Case Latin-1 Letters | ||||
192 | C0 | À | (À ) | LATIN CAPITAL LETTER A WITH GRAVE |
193 | C1 | Á | (Á ) | LATIN CAPITAL LETTER A WITH ACUTE |
194 | C2 | Â | (Â ) | LATIN CAPITAL LETTER A WITH CIRCUMFLEX |
195 | C3 | Ã | (Ã ) | LATIN CAPITAL LETTER A WITH TILDE |
196 | C4 | Ä | (Ä ) | LATIN CAPITAL LETTER A WITH DIAERESIS |
197 | C5 | Å | (Å ) | LATIN CAPITAL LETTER A WITH RING ABOVE |
198 | C6 | Æ | (Æ ) | LATIN CAPITAL LETTER AE |
199 | C7 | Ç | (Ç ) | LATIN CAPITAL LETTER C WITH CEDILLA |
200 | C8 | È | (È ) | LATIN CAPITAL LETTER E WITH GRAVE |
201 | C9 | É | (É ) | LATIN CAPITAL LETTER E WITH ACUTE |
202 | CA | Ê | (Ê ) | LATIN CAPITAL LETTER E WITH CIRCUMFLEX |
203 | CB | Ë | (Ë ) | LATIN CAPITAL LETTER E WITH DIAERESIS |
204 | CC | Ì | (Ì ) | LATIN CAPITAL LETTER I WITH GRAVE |
205 | CD | Í | (Í ) | LATIN CAPITAL LETTER I WITH ACUTE |
206 | CE | Î | (Î ) | LATIN CAPITAL LETTER I WITH CIRCUMFLEX |
207 | CF | Ï | (Ï ) | LATIN CAPITAL LETTER I WITH DIAERESIS |
208 | D0 | Ð | (Ð ) | LATIN CAPITAL LETTER ETH |
209 | D1 | Ñ | (Ñ ) | LATIN CAPITAL LETTER N WITH TILDE |
210 | D2 | Ò | (Ò ) | LATIN CAPITAL LETTER O WITH GRAVE |
211 | D3 | Ó | (Ó ) | LATIN CAPITAL LETTER O WITH ACUTE |
212 | D4 | Ô | (Ô ) | LATIN CAPITAL LETTER O WITH CIRCUMFLEX |
213 | D5 | Õ | (Õ ) | LATIN CAPITAL LETTER O WITH TILDE |
214 | D6 | Ö | (Ö ) | LATIN CAPITAL LETTER O WITH DIAERESIS |
215 | D7 | × | (× ) | MULTIPLICATION SIGN |
216 | D8 | Ø | (Ø ) | LATIN CAPITAL LETTER O WITH STROKE |
217 | D9 | Ù | (Ù ) | LATIN CAPITAL LETTER U WITH GRAVE |
218 | DA | Ú | (Ú ) | LATIN CAPITAL LETTER U WITH ACUTE |
219 | DB | Û | (Û ) | LATIN CAPITAL LETTER U WITH CIRCUMFLEX |
220 | DC | Ü | (Ü ) | LATIN CAPITAL LETTER U WITH DIAERESIS |
221 | DD | Ý | (Ý ) | LATIN CAPITAL LETTER Y WITH ACUTE |
222 | DE | Þ | (Þ ) | LATIN CAPITAL LETTER THORN |
223 | DF | ß | (ß ) | LATIN SMALL LETTER SHARP S |
Lower Case Latin-1 Letters | ||||
224 | E0 | à | (à ) | LATIN SMALL LETTER A WITH GRAVE |
225 | E1 | á | (á ) | LATIN SMALL LETTER A WITH ACUTE |
226 | E2 | â | (â ) | LATIN SMALL LETTER A WITH CIRCUMFLEX |
227 | E3 | ã | (ã ) | LATIN SMALL LETTER A WITH TILDE |
228 | E4 | ä | (ä ) | LATIN SMALL LETTER A WITH DIAERESIS |
229 | E5 | å | (å ) | LATIN SMALL LETTER A WITH RING ABOVE |
230 | E6 | æ | (æ ) | LATIN SMALL LETTER AE |
231 | E7 | ç | (ç ) | LATIN SMALL LETTER C WITH CEDILLA |
232 | E8 | è | (è ) | LATIN SMALL LETTER E WITH GRAVE |
233 | E9 | é | (é ) | LATIN SMALL LETTER E WITH ACUTE |
234 | EA | ê | (ê ) | LATIN SMALL LETTER E WITH CIRCUMFLEX |
235 | EB | ë | (ë ) | LATIN SMALL LETTER E WITH DIAERESIS |
236 | EC | ì | (ì ) | LATIN SMALL LETTER I WITH GRAVE |
237 | ED | í | (í ) | LATIN SMALL LETTER I WITH ACUTE |
238 | EE | î | (î ) | LATIN SMALL LETTER I WITH CIRCUMFLEX |
239 | EF | ï | (ï ) | LATIN SMALL LETTER I WITH DIAERESIS |
240 | F0 | ð | (ð ) | LATIN SMALL LETTER ETH |
241 | F1 | ñ | (ñ ) | LATIN SMALL LETTER N WITH TILDE |
242 | F2 | ò | (ò ) | LATIN SMALL LETTER O WITH GRAVE |
243 | F3 | ó | (ó ) | LATIN SMALL LETTER O WITH ACUTE |
244 | F4 | ô | (ô ) | LATIN SMALL LETTER O WITH CIRCUMFLEX |
245 | F5 | õ | (õ ) | LATIN SMALL LETTER O WITH TILDE |
246 | F6 | ö | (ö ) | LATIN SMALL LETTER O WITH DIAERESIS |
247 | F7 | ÷ | (÷ ) | DIVISION SIGN |
248 | F8 | ø | (ø ) | LATIN SMALL LETTER O WITH STROKE |
249 | F9 | ù | (ù ) | LATIN SMALL LETTER U WITH GRAVE |
250 | FA | ú | (ú ) | LATIN SMALL LETTER U WITH ACUTE |
251 | FB | û | (û ) | LATIN SMALL LETTER U WITH CIRCUMFLEX |
252 | FC | ü | (ü ) | LATIN SMALL LETTER U WITH DIAERESIS |
253 | FD | ý | (ý ) | LATIN SMALL LETTER Y WITH ACUTE |
254 | FE | þ | (þ ) | LATIN SMALL LETTER THORN |
255 | FF | ÿ | (ÿ ) | LATIN SMALL LETTER Y WITH DIAERESIS |
HTML entity names are superfluous: the ISO-8859-1 eight-bit codes will work, by definition, on any browser.
The characters carriage return (ASCII CR) and line feed (ASCII NL, newline) are equivalent; they are treated as whitespace, except in <pre>
contexts, where they force a line break. (However, a line feed is ignored if it immediately follows a carriage return.)
The horizontal tab character (ASCII HT) skips to the next tabbing column in <pre>
contexts, and is treated as whitespace elsewhere.
The non-breaking space ( ) is honored even in non-<pre>
contexts, and can be used to insert extra space between words, images, etc., like this: | |.
The soft hyphen (­) “is a hard problem”, and see also <wbr>
HTML element.
Alternative Sun/X11 “Compose” sequences for the Icelandic “thorn” are “t h” (þ, lowercase) and “T H” (Þ, uppercase).
Note that the Sun/X11 “Compose” sequence for masculine ordinal (º) uses an underscore, while the feminine ordinal (ª) uses a minus sign. It takes a lot of imagination to come up with such ideas…
Composed by J. Stolfi from several sources found throughout the net.
Base on J. Stolfi‘s ISO-8859-1 (ISO Latin 1) Character Encoding, and composed from several sources found throughout the net.
unicode:
unicode
command and it’s official repositoryWikimedia:
Stanford - Miles Davis:
W3Schools:
Christian Rieke’s private project - key-shortcut.com:
]]>ScriptCalculator: https://calc.iwill.im/
GitHub Repo: https://github.com/iwill/ScriptCalculator
ScriptCalculator 是我为了满足个人需求开发的一款计算器。
先看效果,假设某同学月薪 10w,用 ScriptCalculator 计算一下他的税后收入(为了便于演示,这里不考虑五险一金、绩效、ESPP、加班费、餐补等):
最初的需求是想保留计算过程、能展示中间结果,能随时修改数据和计算逻辑,计算结果实时更新,必要的地方可以加备注。好像很正常的需求,但找了好久就没发现哪个计算器能满足,所以只能写代码计算。
开始我用 Chrome 控制台写 JavaScript 比较多,随手就能拿过来写,但问题是输入不方便、输出结果也不直观,要在文本编辑器和控制台之间来回拷贝代码和计算结果。Swift Playgrounds 的结果展示很友好,但代码里多少还是夹杂了数据之外的东西,还要要操心数据类型,而且 Xcode 也不是很轻量。气氛烘托到位,就是时候出手了。
ScriptCalculator 基于网页,核心思想是解析输入的计算脚本,通过预处理变成 JavaScript 代码,然后用 eval()
运行代码完成计算,最后模仿 Swift Playgrounds 输出结果。后来边用边迭代,逐步支持了自定义变量和函数、百分数和各种进制、位运算和布尔值、折行和注释,以及通过 URL 分享计算脚本等丰富的特性。
最终,脚本语法简洁、功能强大,充分地利用了 JavaScript 语言的多种特性。(至少我自己)用起来非常顺手,舒坦!
这里有 丰富的功能演示,不喜欢看文档的可以直接操练起来。
百分数:支持输入百分数,支持结果以百分数形式展示
1 | 10% // 0.1 |
| 需要注意百分号与取余运算符的使用差异
进制:支持输入二、八、十、十六进制数字,支持结果以二至三十六进制形式展示
结果默认以十进制形式展示:
1 | 0b10 // 2 |
末尾加 #<进制数字>
可以切换为展示进制,但并不改变实际结果,支持二至三十六进制:
1 | // 这里每一行都是获取上一行的结果、转换进制展示 |
+
、-
、*
、/
、%
(取余)、(
和 )
等运算符<
、<=
、>
、>=
、==
和 !=
等运算符&&
、||
、!
和三目等运算符 ?:
&
、|
、~
、^
、<<
、>>
和 >>>
等运算符变量:
$n
获取第 n
个结果$
获取上一个结果(不是上一行)JavaScript 常量、方法:
允许访问 JavaScript 中 Math
和 Number
的属性和方法。
Math
的属性可以作为常量使用:
1 | E // 2.718281828459045 |
Math
的方法可以直接作为函数使用:
1 | min(max(1, 2), 3) // 2 |
Number
的属性可以通过 Number.
形式访问:
1 | Number.MAX_SAFE_INTEGER // 9007199254740991 |
扩展的函数:
Math
的小数截取方法只能截取整数,想要截取小数会比较麻烦,toFixed()
方法又不够灵活、而且输出的是字符串格式:
1 | Math.round(2000 / 3 * 100) / 100 // 666.67 | Math 的 round() 方法 |
扩展的函数支持可选的第二个参数就比较方便了,并且还支持整数部分的取舍:
1 | _666: 2000 / 3 // 666.6666666666666 |
自定义变量
定义及使用:
1 | a: 1 // 1 |
自定义函数
定义及调用:
1 | add(a, b): a + b |
支持更具语义化的 RORO 形式参数:
1 | add({ a, b }): \ |
\
可以折行,特别是自定义复杂的函数时可以避免一行过长#
和 //
两种形式的注释注释 + 算式 + 结果
$ + 行号
获取指定行结果暂不支持 BigInt
“行首为运算符时自动在前面填入上一行结果”导致正负号存在歧义
例如:
1 | // exp got |
解决办法是在带正负号的数字外加括号、或在带正负号的数字前换行:
1 | a: 1 // 1 |
class
了,但是直到前两天才偶然看到了 JavaScript 定义 class
的语法,我惊奇地发现写法居然和我的 $class.js
不能说一毛一样,但实在是太像了!zszz,早期的 JavaScript 是不支持定义 class
的,要拿 function
和 prototype
组装。画风大概是这样的:
1 | function Person(name) { |
很丑!所以当时很多框架都给出了不同形式的封装,但是没有一个我喜欢的,比如现在唯一能想到的 Prototype(停更于 2015 年)使用 和 实现 都没好到哪去。并且我倾向于写原生的 JavaScript,于是自己写了一个 $class.js
。
最初 1.0 版本的 $class.js
极其精简,只有 4 行代码!但很好地满足了核心需求:
1 | this.$class = function(src) { |
$class.js
1.0 的使用,看起来是不是好多了:
1 | var Person = $class({ |
后来 2.0 版本的 $class.js
支持了继承、以及调用父类构造方法和方法,代码依然不算多:
1 | this.$class = function $class(source, SuperClass) { |
$class.js
2.0 的使用:
1 | var Person = $class({ |
JavaScript 定义 class
的写法:
1 | const Person = class { |
所以我想说的是:我对代码的品味好像还可以,昂 😎
]]>博客被我用来发布一个非常强大的程序员专用计算器 ScriptCalculator,详细介绍看这里 GitHub。
刚刚更新了个小功能,结果发现 Hexo 部署后博客页面都变空白了,原因是 Hexo (3.9.0) 版本太低,与 Node (17.4.0) 不匹配,所以肯定要升级 Hexo 了。居然挺麻烦的,又没找到官方文档,还好找到了个靠谱的 博客,这里记录一下,以备多年后再次升级用 🙈
1 | 查看 Hexo 版本 |
发布时遇到提示不支持用户名+密码方式 push 代码,所以 _config.yml
中的 repo
要改为 ssh
URL:
1 | url: http://iwill.github.io/ |
然后,一切又完好如初 😋
]]>1 | $ hexo new "My New Post" |
More info: Writing
1 | $ hexo server |
More info: Server
1 | $ hexo generate |
More info: Generating
1 | $ hexo deploy |
More info: Deployment
]]>看到我订阅的博客多半是用 Octopress 搭建的,所以认定这是个高大上。但是貌似是 XCode 升级到 5.1.1 导致 Ruby 的一些东西不正常了,一直安装失败,GitHub Pages 推荐的 Jekyll 也一样。折腾大半天,非 Ruby Fan 实在无法坚持了,装 B 不成、最终选了 Hexo [hekso] - A fast, simple & powerful blog framework, powered by Node.js
,与前者的使用很相似。不熟悉 JavaScript 也没关系,只要不改皮肤基本不会碰到 JavaScript。
首先建议安装 Homebrew - The missing package manager for OS X
。感觉叫 missing
的都是极品,比如 TextMate - The missing editor for Mac OS X
。
1 | ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)" |
安装 Node.js - 服务端的 JavaScript,以及 npm - Node Packaged Modules。npm 是前者的 Package Manager,会随 Node.js 一同安装。
1 | brew install node |
1 | npm install hexo -g # 安装 Hexo |
可以访问 http://localhost:4000/ 查看效果,修改 Markdown 无需重新 Server。
Hexo Workspace 的 目录结构 如下,其中 _config.yml
是 配置文件:
1 | . |
建议随时备份 Hexo Workspace,GitLab、GitHub 或者 Dropbox,这有 Hexo 的 .gitignore。
Hexo 的命令也很简单,可以通过 hexo help
、hexo help command
查看帮助,下面是最常用的几个命令:
1 | hexo n [draft] "blog-title" [-s "file-name"] # n - new,新建博客/草稿 |
更多参考 Hexo Documentation。
Hexo 天生支持 DISQUS 的评论功能,在 _config.yml
中设置 disqus_shortname
即可。
我现在用到的插件有 Util、Local Image、Deployment、Feed,安装命令:
1 | npm install hexo-util --save |
更多参考 Hexo Plugins。
Hexo 的 皮肤不多 现在已经很多了,我用的是 Light Cactus - Dark,非常简洁,内置另外 White、Light 和 Classic 三款配色也都很美观,还有数十款代码高亮可选。
皮肤有单独的配置文件 themes/cactus/_config.yml
,可以添加页面、链接,例如 About、RSS,并且还可以展示 GitHub 项目、Disqus 评论等,更多功能详见 Features。
更多参考 Hexo Themes。
现在本地的博客已经搭建起来了,下一步是发布到 GitHub。
在 GitHub 上 创建一个 repo,格式是 username
.github.io。
打开 Hexo 配置文件 _config.yml
,设置博客 url 和 deploy 相关参数:
1 | url: http://iwill.github.io/ |
安装 hexo-deployer-git
:
1 | npm install hexo-deployer-git --save |
发布静态文件到 GitHub:
1 | hexo d |
访问 https://github.com/iwill/iwill.github.io 可以看见刚刚发布上去的静态文件,访问 http://iwill.github.io 就可以看见博客了!
更多参考 GitHub Pages、Hexo Deployment。
没有域名可以去 https://domai.nr/ 找一个注册,之后做如下设置:
Hexo 的配置文件中的 url 设置为完整的博客地址,如 http://iwill.im/
。
在 Hexo Workspace 的 Source 目录下创建名为 CNAME 的文本文件、写入域名,如 iwill.im
。
然后执行 hexo d -g
将上面设置发布到 GitHub Pages 上。
在域名服务后台设置域名跳转,注意二级域名 (如 iwill.im
) 和三级域名 (如 www.iwill.im
、blog.iwill.im
) 的设置有所不同,需仔细阅读下面说明进行设置、校验:
https://help.github.com/articles/setting-up-a-custom-domain-with-github-pages#subdomains
https://help.github.com/articles/setting-up-a-custom-domain-with-github-pages#apex-domains
这是我的设置:
在文章中插入 <!-- more -->
可以将前面部分生成摘要,否则默认显示全文;
到这才发现,写博客才是最困难的 …
]]>