Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Именованные аргументы в функции - значение по умолчанию не выводится (https://javascript.ru/forum/misc/52851-imenovannye-argumenty-v-funkcii-znachenie-po-umolchaniyu-ne-vyvoditsya.html)

Kot_Vertolet 09.01.2015 19:19

Именованные аргументы в функции - значение по умолчанию не выводится
 
Подскажите, почему этот код не выводит значение по умолчанию для поля sex?
function show(options) {
    var name = options.name || 'Anton';
    var age = options.age || 22;
    var sex = options.sex || 'Male';

    console.log(options.name);
    console.log(options.age);
    console.log(options.sex);
}


var opts = {
name: 'John',
age: 23
}

show(opts);

Octane 09.01.2015 19:37

options.sex = options.sex || 'Male';

или
console.log(sex);

Kot_Vertolet 09.01.2015 19:42

Цитата:

console.log(sex);
Протупил, простите. Так работает, спасибо!

Kot_Vertolet 10.01.2015 20:17

Опять непонятки, написал функцию:
function taskCreation(taskDueDate, taskProperties) {
function taskCreation(taskDueDate, taskProperties) {
if(taskDueDate == null) {
		operation = 'add';
		interval = 1;
		period = 'days'
	}
else {
	var operation = taskDueDate.operation;
	var interval = taskDueDate.interval;
	var period = taskDueDate.period;
	var taskName = taskProperties.taskName || 'Defualt task name';
	var taskDescription = taskProperties.taskDescription || 'Default task decription';
}

	console.log("Task properties: Operation: " + operation  +', Interval: ' + interval 
		+ ', Period: ' + period + ', Task name: ' + taskName + ', Description: '+ taskDescription);
}


var opts = {
	taskName:'Some name'
}

taskCreation(null, opts)


В результате получаю такое:
Task properties: Operation: add, Interval: 1, Period: days, Task name: undefined, Description: undefined


В чём тут проблема, почему Task name и Description = undefined, если я указал дефолтное значение для Description, а Task name передается в аргументе?

danik.js 10.01.2015 20:33

Выполняется первая ветка if, вторая не выполняется. Чета ты совсем пенёк..

bes 10.01.2015 20:39

ты не бойся в код-то глядеть
поставь breakpoint и нажимай на next step, если так сразу не видно


Часовой пояс GMT +3, время: 15:22.