JavaScript Проверка на аргумент-undefined

242
24 февраля 2017, 02:33

Изучаю JavaScript. Тема: «Псевдомассив аргументов "arguments"».

Задача из учебника:

Как в функции отличить отсутствующий аргумент от undefined?

function f(x) { 
  // ..ваш код.. 
  // выведите 1, если первый аргумент есть, и 0 - если нет 
} 
 
f(undefined); // 1 
f(); // 0

Ответ из учебника:

Узнать количество реально переданных аргументов можно по значению arguments.length:

function f(x) { 
  alert( arguments.length ? 1 : 0 ); 
} 
 
f(undefined); 
f();

Меня конечно такой ответ не очень устроил, т.к. я хотел видеть результат получения ноля, когда отсутствует первый аргумент, но присутствуют другие.

Вот, что мне хочется получить:

  // выведите 1, если первый аргумент есть, и 0 - если нет 
'use strict'; 
 
function f(x, a, b) { 
  // code 
} 
 
f(undefined);     // Получить 1 
f();              // Получить 0 
f('', 78, 'abc'); // Получить 0

т.е. когда первый "отсутствующий", но есть другие, чтобы выдавал 0.

1). Мой первый вопрос, терминология. В моем варианте f('', 78, 'abc'); Первый аргумент назывется "отсутствующий" или нет?

В поисках решения,я пытался записать так:

alert((arguments[0]).length ? 1 : 0); 
 
alert(arguments[0].length ? 1 : 0);

Но видимо такая запись некорректная и я решил действовать основательно, много думал и в итоге, вот мое решение в одну строку:

'use strict'; 
 
function f(x, a, b) { 
  arguments.length ? console.log(arguments[0] === '' ? 0 : 1) : console.log(0); 
} 
 
f(undefined);     //  1 
f();              //  0 
f('', 78, 'abc'); //  0

Все, что хотел, я получил, теперь отсутствующий аргумент отличаем от undefined; получаем 0, когда первый отсутствующий и других нет, и когда первый отсутствующий,но есть другие.

2). Мой второй вопрос. Как вам мой код? Возможно я что-то упустил или есть более оптимальная запись.

READ ALSO
Node.js. Express, как использовать middleware только для корня

Node.js. Express, как использовать middleware только для корня

Хочу сделать авторизацию при переходе в корень сайта, остальные ссылки не трогатьПытаюсь сделать:

215
Удаления символа BOM :(

Удаления символа BOM :(

Проблема заключается в том, что после названия файла с темой css доставляется символ BOMВыглядит так:

187
Ошибка sel_EL.select2 is not a function

Ошибка sel_EL.select2 is not a function

Добрый деньНа сайте https://mil-ru

227