2014-12-10 4 views
0

Мне было интересно, что такое значение игнорируемого параметра в JS. Допустим, что функция принимает 2 значения в качестве параметров, и мы предоставляем только один вызов. Какова ценность другой? Я думал, что это будет неопределенным, но следующий фрагмент кода отображает только «1».Каково значение игнорируемого параметра в javascript?

var test = function(par1, par2){ 
    document.write(par1.toString()); 
    document.write(par2.toString()); 
    if(typeof par2 === "undefined"){ 
     document.write('undefined'); 
    } 
}; 

test(1); 

следующий код будет работать:

var test = function(par1, par2){ 
    document.write(par1.toString()); 
    document.write(par2); 
    if(par2 === undefined){ 
     document.write('undefined'); 
    } 
}; 

test(1); 
+0

это 'undefined' - ваш код бросает, потому что' toString' на 'undefined' терпит неудачу. –

+0

только что понял, что я использовал toString() для неопределенного параметра. Когда удаляется, он пишет «undefined», почему мой оператор if не работает? – Rakim

+0

, потому что он выдает ошибку! проверьте консоль своего браузера или поместите его в блок 'try..catch'. –

ответ

1

Если параметр не задан, его значение undefined. Обратите внимание, что сама переменная доступна (в конце концов, ее имя уже передано в функцию через список аргументов, и это имя учитывается в JavaScript), поэтому нет необходимости проверять ее с помощью typeof var === 'undefined', чтобы избежать этих надоедливых ReferenceErrors.

undefined - специальное значение в JavaScript. Хотя вы не можете вызывать какой-либо метод (с ошибкой undefined is not an object), вы все равно можете использовать его в выражениях и вызовах функций. В этом конкретном случае document.write неявно преобразует это значение в String перед его отображением; результатом будет Строка - 'undefined'.

Demo.

0

Try:

var test = function(par1, par2){ 
    if(par2 === undefined){ 
     document.write('undefined'); 
    } 
}; 

test(1); 

Working demo

Вы также можете проверить, если ваши атрибуты устанавливаются. Пример:

var test = function(par1, par2){ 
    if(par1 === undefined){ 
     document.write('par1 is undefined'); 
    }else{ 
     document.write('par1 is set'); 
    } 
    if(par2 === undefined){ 
     document.write('par2 is undefined'); 
    }else{ 
     document.write('par2 is set'); 
    } 
}; 

test(1); 

И выход будет:

par1 is set 
par2 is undefined 

Demo 2

Надеется, что это поможет :)