Function arguments

2 snippets across 2 stacks - Bash & Linux, JavaScript

Also written as function as argument

SHBash & Linux

Functions

SH · Bash Scripting
Syntax
function_name() {
  commands
  return exit_code
}
Example
log_msg() {
  local level="$1"
  local message="$2"
  echo "[$(date '+%Y-%m-%d %H:%M:%S')] [${level}] ${message}"
}

log_msg "INFO" "Deployment started"
log_msg "ERROR" "Config file missing"
Output
[2026-04-04 14:22:01] [INFO] Deployment started
[2026-04-04 14:22:01] [ERROR] Config file missing

Note Use local to scope variables to the function (without local, variables are global). Arguments are accessed via $1, $2, etc. $@ is all arguments. return sets the exit code (0-255); to return strings, echo them and capture with $().

JSJavaScript

Higher-Order Functions

JS · Functions
Syntax
function fn(callback) { callback(); }
function fn() { return function() {}; }
Example
function withLogging(fn) {
  return function(...args) {
    console.log(`Calling ${fn.name} with`, args);
    const result = fn(...args);
    console.log(`Result:`, result);
    return result;
  };
}

const add = (a, b) => a + b;
const loggedAdd = withLogging(add);
loggedAdd(3, 4);
Output
"Calling add with [3, 4]"
"Result: 7"

Note Functions that accept or return other functions. The backbone of functional patterns like decorators, middleware, and composition.

Frequently asked questions

How does Bash & Linux handle function arguments?
This task is covered in 2 stacks on this page: Bash & Linux, JavaScript. The "Functions" snippet in Bash & Linux uses `function_name() {`.
Which command does the Bash & Linux example use?
The "Functions" snippet uses `function_name() {`, from the Bash Scripting section of the Bash & Linux cheat sheet.
Which stacks cover "function arguments" on this page?
Bash & Linux, JavaScript. Together they hold 2 copy-ready snippets for this task.
Is there anything to watch out for?
Yes. For "Functions": Use local to scope variables to the function (without local, variables are global). Arguments are accessed via $1, $2, etc. $@ is all arguments. return sets the exit code (0-255); to return strings, echo them and capture with $().