Почему тип числа не инициализируется 0?

Я хотел бы использовать java.time API из Java8 + только с одним шаблоном:

private boolean isDate(String dateString) {
    DateTimeFormatter format =
            DateTimeFormatter.ofPattern(
                    "[M/d/uuuu][M-d-uuuu][MMM/d/uuuu][d-MMM-uuuu]"
            );
    try {
        LocalDate.parse(dateString, format);
        return true;
    }catch (DateTimeParseException e){
        return false;
    }
}

, где [M/d/uuuu][M-d-uuuu][MMM/d/uuuu][d-MMM-uuuu] означает совпадение с M/d/uuuu или M-d-uuuu или MMM/d/uuuu или d-MMM-uuuu

0
задан AJT_82 18 January 2019 в 20:28
поделиться

3 ответа

Это не имеет отношения к Angular. Сам JavaScript никогда не инициализирует значение, когда вы определяете переменную, JavaScript просто выделяет эту переменную как переменную любого типа.

Вы на самом деле пишете на TypeScript, который, конечно же, является типизированным надмножеством JavaScript, и все, что делает

count: number;

- это выделение переменной count и обозначение ее тип number. Вы, разработчик, должны инициализировать переменную самостоятельно, потому что во многих случаях вы не хотите, чтобы переменная была инициализирована.

Так, например, в Vue есть декоратор @Prop(), который вы используете для предоставления доступа к данным из родительского компонента дочернему элементу.

Пример:

@Prop(String)
public title?: string

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

Есть еще много случаев, когда вы не хотите инициализировать переменную значением, имейте в виду, что это может привести к неопределенным значениям, которые, если вы не обрабатываете, могут быть проблемой. Однако, если вы используете что-то вроде TSLint в коде Visual Studio или любом другом расширяемом редакторе, вы увидите, когда вам нужно это обработать.

public exampleFunction() {
  // if you try and use title here it may be undefined
  if (!this.title) {
    return
  }
  // after you check to make sure that title is not undefined you can be sure it's safe to use it
}

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

0
ответ дан Daniel Turcich 18 January 2019 в 20:28
поделиться

Если вы пришли из Java, вы ожидаете, что переменная boolean будет иметь значение по умолчанию false.

Аналогично, в JavaScript тоже значение по умолчанию существует , и это примитивное значение undefined. TypeScript просто использует типы данных JavaScript и не меняет поведение.

Таким образом, любая переменная, которая определена и не назначена, будет иметь значение по умолчанию undefined (а НЕ null; в отличие от Java)

Читать на MDN: https: //developer.mozilla.org/en-US/docs/Glossary/Undefined

0
ответ дан Aragorn 18 January 2019 в 20:28
поделиться

Это не определено сейчас. Вот как работает JavaScript, пока вы не определите переменную, которая не определена ...

В вашем случае, если вы хотите начать отсчет с 0, просто установите значение переменной в 0 ...

Пример: count: number = 0;

0
ответ дан Srdjan 18 January 2019 в 20:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: