first commit

This commit is contained in:
me
2026-04-08 21:25:17 +03:00
parent 3681b8eccd
commit 371b14c5e3
173 changed files with 14126 additions and 0 deletions

View File

@@ -0,0 +1,128 @@
"use strict";
chapter("Functions");
section("Arguments");
subsection("Indices");
let dumpArgs = function() {
println(arguments.constructor.name);
for (let i = 0; i < arguments.length; i++) {
println(" ", i, arguments[i]);
}
};
println("let dumpArgs =", dumpArgs);
example("dumpArgs(1, 2, 'hello', null, undefined)");
subsection("Values");
let dumpArgs2 = function() {
println(arguments.constructor.name);
for (const arg of arguments) {
println(" ", arg);
}
};
println("let dumpArgs2 =", dumpArgs2);
example("dumpArgs2(1, 2, 'hello', null, undefined)");
subsection("sum");
let sum = function() {
let result = 0;
for (const arg of arguments) {
result += arg;
}
return result;
};
println("let sum =", sum);
example("sum(1, 2, 3)");
subsection("minimum");
let minimum = function() {
let result = Infinity;
for (const arg of arguments) {
if (result > arg) {
result = arg;
}
}
return result;
};
println("let minimum =", minimum);
example("minimum(1, -2, 3)");
section("Named functions and arguments");
function min(a, b) {
//println(" ", typeof(a), typeof(b));
return a < b ? a : b;
}
println(min);
example("min(1, -1)");
example("min(1, -1)");
example("min(1)");
example("min()");
subsection("Still values");
let m = min;
example("m");
example("m.name");
example("m.length");
example("m(10, 20)");
section("Default arguments");
function def(a = -10, b = -20) {
return [a, b];
}
println(def);
example("def(1, 2)");
example("def(1)");
example("def()");
section("Rest argument and spread calls");
function minRest(first, ...rest) {
let result = first;
for (const a of rest) {
result = min(result, a);
}
return result;
}
println(minRest);
example("minRest(1)");
example("minRest(1, -1)");
example("minRest(1, -1, 2, -2)");
example("minRest(...[1, -1, 2, -2])");
example("minRest(1, -1, ...[2, -2])");
section("Arrow functions");
const minArr = (a, b) => a < b ? a : b;
example("minArr");
example("minArr(1, -2)");
const minArrow = (first, ...rest) => {
let result = first;
for (const a of rest) {
result = Math.min(result, a);
}
return result;
};
example("minArrow");
example("minArrow(1)");
example("minArrow(1, -1)");
example("minArrow(1, -1, 2, -2)");
const stupidArrow = (v) => {
println(v);
// No "arguments" for arrow functions
// println(arguments);
};
example("stupidArrow");
example("stupidArrow(3)");