jquery / javascript отсутствует) после формальных параметров - PullRequest
3 голосов
/ 08 августа 2011

Привет, у меня есть этот код:

function getFullnameDetails(mainHeight,upperstyle,type=''){
    setTimeout(function(){fullnameCenter(mainHeight,upperstyle,type='')},2000);
}
function fullnameCenter(mainHeight,upperstyle,type=''){
    var distOfMainAndUpper = mainHeight - upperstyle;
    var mainHalfHeight = mainHeight/2;
    var imageHeight = jQuery("img[rel='fullname']").height(); //there is a delay
    var imageHalfHeight = imageHeight/2;
    var fromImageTopToMainHalf = mainHalfHeight - imageHeight;
    var position = imageHalfHeight+fromImageTopToMainHalf-distOfMainAndUpper;
    if(type == 'big'){ jQuery("#temp .test1").css("bottom",position+"px"); }
    else { jQuery(".test1").css("bottom",position+"px"); }


}

Это говорит, что я пропускаю) после формальных параметров.Это происходит в этой строке:

function getFullnameDetails(mainHeight,upperstyle,type=''){ //IT HAPPENS HERE! :)
    setTimeout(function(){fullnameCenter(mainHeight,upperstyle,type='')},2000);
}

Что я здесь не так делаю.

Заранее спасибо за помощь:)

Ответы [ 3 ]

8 голосов
/ 08 августа 2011

Javascript не поддерживает значения параметров функции по умолчанию.

Вы можете делать такие вещи (но опасаться непреднамеренных «ложных» значений):

function getFullnameDetails(mainHeight,upperstyle,type){
  type = type || ''; // if type is 'falsey' (null, undefined, empty string) assign ''
  //...
}
3 голосов
/ 08 августа 2011

Как указывалось в других ответах, JavaScript не поддерживает значения по умолчанию в параметрах функции.Однако, как также указывалось в других решениях, использование встроенного || не будет работать при передаче значений Falsey (например, null, 0, '', NaN, false).Лучшее решение - проверить, является ли аргумент неопределенным:

type = typeof(type) !== 'undefined' ? type : '';

или, в более общем случае:

argument_name = typeof(argument_name) !== 'undefined' ? argument_name : default_value;

OfКонечно, это означает, что передача undefined функции будет означать, что вместо нее используется значение по умолчанию, но это должно быть довольно редко.

1 голос
/ 08 августа 2011

Вы пытаетесь использовать как параметр по умолчанию или что-то?

Тип = ''

Это недопустимо - вы не можете иметь знак равенства в списке параметров такой функции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...