Параметры функции по умолчанию — это один из полезных способов инициализации параметров со значением по умолчанию, когда значение не передается, т. е. когда передается undefined
.
Это наиболее полезно, когда мы реализуем какие-либо служебные функции, где вызов функции не находится в наших руках.
Давайте посмотрим на примере, как эти параметры по умолчанию будут удобны.
const greetings = (name) => { console.log(`Hello, ${name}`); } greetings(); //Output: Hello, undefined
В приведенном выше примере, если мы видим, мы не передаем никаких аргументов, хотя функция ожидает один аргумент. Итак, в консоли мы видим Hello, undefined
.
Итак, чтобы напечатать осмысленный вывод в консоли, мы проверяли, является ли typeof
параметром, и присваивали значение по умолчанию или использовали logical OR (||)
, как показано ниже.
const greetings = (name) => { const nameVal = (typeof name !== "undefined") ? name: "World"; console.log(`Hello, ${nameVal}`); } greetings(); //Output: Hello, World //Or like using logical OR operator const greetings = (name) => { console.log(`Hello, ${name || "World"}`); } greetings(); //Output: Hello, World //Or like this if the parameter is being used in multiple places in the function body const greetings = (name) => { const nameVal = name || "World"; console.log(`Hello, ${nameVal}`); } greetings(); //Output: Hello, World
Учтите, что у вас есть более одного параметра, и эти параметры используются в нескольких местах в функции, тогда это будет нечисто. Таким образом, чтобы использовать значения по умолчанию только тогда, когда параметры по умолчанию no value is passed
или undefined is passed
будут очень кстати.
//This is how default values can be given to the function parameters const greetings = (name = "World") => { console.log(`Hello, ${name}`); } greetings(); //Output: Hello, World
Если мы видим в приведенном выше примере, в самом заголовке функции мы присваиваем значение параметрам. Таким образом, тело функции будет намного чище и понятнее. Кроме того, будет легко, если будет более одного параметра.
const greetings = (greet = "Hello", name = "World") => { console.log(`${greet}, ${name}`); } greetings(); //Output: Hello, World greetings("Hey", "John"); //Output: Hey, John greetings(undefined, "John"); //Output: Hello, John
Передача ложных значений
Значение по умолчанию в функции будет назначено только в том случае, если переданное значение равно undefined
, а не для каких-либо значений falsy
. Давайте посмотрим примеры для того же
const print = (val = "Tada") => { console.log(`Argument Value: ${val}`); } print(''); //Output: Argument Value: '' print(null); //Output: Argument Value: null print(); //Output: Argument Value: Tada
Деструктурированныйпараметр со значением по умолчанию
Не только примитивные значения, но мы можем также для объектов и массивов мы можем дать значения по умолчанию
const greet = ({name} = {name: "John"}) => { console.log(`Hello, ${name}`); } greet({name: "JavaScript"}); //Output: Hello, JavaScript greet(); //Output: Hello, John
Примечание. Как обсуждалось выше, значения по умолчанию будут назначены, только если передано значение
undefined
или только если значение не передано.
Ниже приведены соответствующие примеры,