En | 中文
-
basic:
+
,-
,*
,/
,%
,=
,(
and)
-
variables:
<previous>
,$
,$ln
-
optional spaces
-
comments
2 + 4 // 2 + 4 == 6
- 3 // 6 - 3 == 3 | prepend 6 - the result of the previous line
// empty line
* 4 // ERROR | the previous line is empty
$0 / 2 // 6 / 2 == 3 | $0 is 6 - the result of the 0th line
// empty line
10 % $ // 10 / 3 == 1 | $ is 3 - the previous result, not "the result of the previous line"
$$ // == 3 | $$ is 3 - the 2nd-to-last result
- percentage:
%
if it's NOT followed bynumber
,variable
,function
or(
10% // 0.1 | percentage
10 % // 0.1 | percentage
10% + 1 // 0.1 + 1 == 1.1 | percentage
10% % 1 // 0.1 % 1 == 0.1 | percentage and remainder operation
10% - 7 // 0.1 - 7 == -6.9 | percentage
10 % (-7) // 10 % 7 == 3 | remainder operation
- percentage conversion
0.1 %% // 10%
* 2 // 0.2
%% // 20%
- base/radix conversion
0b10 // 2
0o10 // 8
10 // 10
0x10 // 16
32 #2 // 0b100000
#8 // 0o40
#10 // 32
#16 // 0x20
#32 // 10
#36 // W
$ // 32
- bitwise operations
1 << 0 #2 // 0b1
1 << 1 #2 // 0b10
1 << 2 #2 // 0b100
1 << 4 #2 // 0b10000
1 << 8 #2 // 0b100000000
1 << 16 #2 // 0b10000000000000000
1 << 32 #2 // 0b1 - JavaScript Uses 32 bits Bitwise Operands
- builtin variables & functions
E // 2.718281828459045
PI // 3.141592653589793
GR // 0.6180339887498949
MAX_SAFE_INTEGER // 9007199254740991
== pow(2, 53) - 1 // true
MIN_SAFE_INTEGER // -9007199254740991
== - (pow(2, 53) - 1) // true
min(max(1, 2), 3) // 2
pow(2, 10) // 1024
sqrt(1024) // 32
round(2000 / 3 * 100) / 100 // 666.67
round(2000 / 3, 2) // 666.67
_666: 2000 / 3 // 666.6666666666666
round(_666, 3) // 666.667
floor(_666, 2) // 666.66
ceil(_666 / 2, 1) // 333.4
round(_666) // 667
round(_666, -1) // 670
round(_666, -2) // 700
1 // 1 | line number: 0
2 // 2 | line number: 1
3 // 3 | line number: 2
$sum(0, 2) = 6 \ // sum range: 0...2
&& $sum(-3, -1) = 6 \ // sum range: -3...-1
&& $sum(0) = 6 \ // sum range: 0...
&& $sum() = 6 \ // sum range: 0...
// true
$avg(0, 2) // 2
$min(0, 2) // 1
$max(0, 2) // 3
- defining variables & functions
tax_rate: 0.45 // 0.45
tax_qcd: 181920 // 181920
1000000 * tax_rate - tax_qcd // 268080
fun(ads, ads2usd, usd2rmb, rate, qcd): ads * ads2usd * usd2rmb * (1 - rate) + qcd
fun(10000, 45, 7, tax_rate, tax_qcd) // 1914420.0000000002
add({ a, b }): \
a + b
add({ a: 1, b: 2 }) // 3
- JavaScript blocks
vals[<result_index>]
,vars.<custom_var_name>
andfuncs.<custom_func_name>
are available in JavaScript blocks
```
let s = "x";
return s.length;
``` // 1
lx: $ // 1
lx: \
```
let s = "x";
return s.length;
``` // 1
lx // 1
double(x): \
```js
return x * 2;
```
double(1) // 2
# Fibonacci
f: \
```js
// context for func
let prev = 0;
// func name for recursive invocation
// instead of using `funcs._f`
return function _f(n, reset) {
if (typeof n == "boolean") {
reset = n;
n = undefined;
}
if (reset) {
prev = 0;
}
if (n == undefined) {
n = prev;
prev = prev + 1;
}
if (n <= 0) return 0;
if (n <= 2) return 1;
return _f(n - 1) + _f(n - 2);
}
```
f() // 0
f() // 1
f() // 1
f() // 2
f() // 3
f() // 5
f(true) // 0
f() // 1
f() // 1
f() // 2
f() // 3
f() // 5
-
decimal place count
-
decimal rounding method
-
reset settings
-
copy script + outputs + comments
-
line number
-
sync scrolling
-
vertical ruler
-
change case:
- control+u: uppercase
- control+shift+u: lowercase
- control+option+u: capitalize
-
format with shortcuts:
- control+l: align script left, appending spaces to the right
- +option: keep leading spaces
- +shift: prepend spaces to the left
- control+r: align script right, remove leading and trailing spaces
- control+m: align script middle, align to trailing comments
- control+[/]: indent left/right with 4 spaces
- +option: keep leading spaces
- control+/: prepend/remove trailing
//
comments
- control+l: align script left, appending spaces to the right
-
other shortcuts:
- control+,: insert configurations with default values
- control+shift+/: show help
-
serialize script to url hash and deserialize
-
share with short url
-
console log
-
display error/warning count (at top) and info on the right
-
try it yourself
in readme
- page becomes unresponsive after type the semicolon like this
- remember copying the url to backup if it happened
- write
break;
first to workaround temporarily
```js
// the caret 👇🏿
for (let i = 0; i < 1;|) {
}
```
- sometimes, result area does not scroll when insert newline