Оператор typeof и тип аргумента

  • Искал в инете описание "тип аргумента", но так и не нашел понятную инфу.
  • Если вам не тяжело, то не могли бы вы мне на примере показать, что такое тип аргумента?
  • Cтолкнулся с данным термином при знакомстве с typeof.

function fux(a,b){ 

let sum = a + b; // a и b это и есть типы аргументов?

alert(sum);

};

fux(2,3);


Ответы (3 шт):

Автор решения: Igor

function fux(a, b) {
  console.log("a:", "type =", typeof a, ", value =", a);
  console.log("b: ", "type =", typeof b, ", value =", b);
  let sum = a + b;
  console.log("sum: ", "type =", typeof sum, ", value =", sum);
  return sum;
};

fux(2, 3);
fux("Hello ", 3);
fux();
fux(true, false);

→ Ссылка
Автор решения: int6h

Тип аргумента -- это не специальное понятие. Тип аргумента -- это тип данных, к которому относится аргумент, который передали в функцию. Замечу: "относится". То, что у значения есть тип, не значит, что этот тип явно указан.

Функция на языке C может выглядеть так:

int sum(int a, int b)
{
    return a + b;
}
.

В сигнатуре функции int sum(int a, int b) записано, что функция принимает в качестве аргументов два целых числа и возвращает целое число.

На JavaScript:

function sum(a, b){
    return a + b;
}

Как видно, тут явно не указываются типы аргументов, с которыми работает функция. Но у каждого значения в любом случае есть какой-то тип (по крайней мере в JS).

Пример:

console.log(sum('abc', 'def')); // тип аргументов -- строка и строка
console.log(sum('abcd', 4)); // тип аргументов -- строка и число.
→ Ссылка
Автор решения: Qwertiy

typeof возвращает строку, содержащую названия типа данных, которому принадлежит его аргумент.

  • У каждого примитивноuj типа кроме null есть свой название: number, string, boolean, undefned, symbol, bigint.
  • Все функции и классы - function.
  • Все остальные объекты и null - object.

function showType(x) {
  console.log(format(x), typeof x)
}

/* ES5 */

showType(42)                    // number
showType(12.5)                  // number
showType(NaN)                   // number
showType(Infinity)              // number
showType(Number(-1))            // number
 
showType("")                    // string
showType("a")                   // string
showType("abc")                 // string
 
showType(true)                  // boolean
showType(undefined)             // undefined
 
showType(null)                  // object
showType({})                    // object
showType([])                    // object
showType(/./)                   // object
showType(new Date)              // object
showType(new Number(-1))        // object
 
showType(function(){})          // function

/* ES6+ */

try {
  eval('showType(`${1}`)')      // string
  eval('showType(()=>0)')       // function
  eval('showType(class{})')     // function
  eval('showType(Symbol())')    // symbol
  eval('showType(BigInt(0))')   // bigint
  eval('showType(1n)')          // bigint
} catch (e) {
}

function format(x) {
  switch (x == null || typeof x) {
    case true:
    case 'object':
      return x
    
    case 'string':
      return JSON.stringify(x)
      
    case 'bigint':
      return x + "n"
      
    default:
      return x.toString()
  }
}
.as-console-wrapper.as-console-wrapper { max-height: 100vh }

→ Ссылка