Оператор typeof и тип аргумента
- Искал в инете описание "тип аргумента", но так и не нашел понятную инфу.
- Если вам не тяжело, то не могли бы вы мне на примере показать, что такое тип аргумента?
- Cтолкнулся с данным термином при знакомстве с typeof.
function fux(a,b){
let sum = a + b; // a и b это и есть типы аргументов?
alert(sum);
};
fux(2,3);
Ответы (3 шт):
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);
Тип аргумента -- это не специальное понятие. Тип аргумента -- это тип данных, к которому относится аргумент, который передали в функцию. Замечу: "относится". То, что у значения есть тип, не значит, что этот тип явно указан.
Функция на языке 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)); // тип аргументов -- строка и число.
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 }