Вопрос №183 от пользователя Sergei в уроке «Числа в JavaScript», курс «Введение в Javascript»

Sergei

Здравствуйте, var number = parseInt(someString, 10); - разве так не работает

36 0

Rakhim D.

Здравствуйте, это вопрос?

0

Sergei

Сам не знаю вопрос ли это? Я должен преобразовать строку в число, var someString = Number("42.4731"); - это правильно или с синтаксисом у меня никак

0

Sergei

var someString = Number("42.4731");
var number = someString;

а почему так не правильно?

0

Rakhim D.

Да, var number = parseInt(someString, 10); должно сработать. Также можно опустить 10 в данном случае.

0

Sergei

извините, что-то я совсем запутался: нужно строку someString конвертировать в число, для этого я создаю новую переменную и var someString1 = Number(someString); а затем присваиваю значение someString1 переменной number, правильно ли так?

0

Rakhim D.

Зачем лишний шаг? number = Number(someString); и все

0

Sergei

Вот у меня решения из трёх файлов: 1 var number = Number(someString); 2 var number = parseInt(someString); 3 var number = someNumber.toFixed(2); а, все равно ругается на неработоспособность, где же ошибка?

0

Rakhim D.

Запускайте тесты чтобы увидеть где ошибка. Чтобы запустить тесты нужно нажать кнопку "run" в верхнем левом углу редактора (над файловым деревом) или ввести в терминале make test.

0

Sergei

спасибо

1

Sergei

Вот что у меня получается: /* global require describe it module _ assert*/ require("./test_helper.js");

describe("Numbers", function() { "use strict";

it("convert string value to number", function() { var someString = "42.4731"; //var number; // BEGIN number = Number(someString); // END

assert.equal(number, 42.4731);

}); }); Но это не работает

0

Rakhim D.

Что тесты пишут?

0

Rakhim D.

number = Number(someString); в упражнении conversion_test.js – это правильное решение, тесты проходят возможно, вы ошиблись в других упражнениях (файлах)

0

Sergei

В третьем тесте у меня: /* global require describe it module _ assert*/ require("./test_helper.js");

describe("Numbers", function() { "use strict";

it("convert number into a string, keeping only two decimals", function() { var someNumber = 712.8162; // BEGIN var number; number = someNumber.toFixed(2); // END

assert.equal(number, "712.82");

}); }); Ругается, что number не определена

0

Rakhim D.

Ага, значит нужно определить number :) То есть вместо number = someNumber.toFixed(2); надо написать var number = someNumber.toFixed(2); или просто где-нибудь выше определить переменную так: var number; (как в других файлах).

С одной стороны, да, странно, что в разных файлах разные подачи. Но зато теперь вы знаете что такое определение переменной и как ее определять, а также как писать код с использованием TDD.

0

Rakhim D.

А, извиняюсь, не заметил что вы сделали var number;. Пожалуйста, на будущее, используйте форматирование кода (вот описание.

0

Rakhim D.

Ваш код верный, тесты проходят.

0

Sergei

Зато задания не проходят

0

Kirill Mokevnin

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

0

Sergei

/* global require describe it module _ assert*/
require("./test_helper.js");

describe("Numbers", function() {
  "use strict";

  it("convert number into a string, keeping only two decimals", function() {
    var someNumber = 712.8162;
    // BEGIN
    var number;
    number = someNumber.toFixed(2);
    // END

    assert.equal(number, "712.82");
  });
});
0

Sergei

conversion_test.js

/* global require describe it module _ assert*/
require("./test_helper.js");

describe("Numbers", function() {
  "use strict";

  it("convert string value to number", function() {
    var someString = "42.4731";
    //var number;
    // BEGIN
  number = Number(someString);
    // END

    assert.equal(number, 42.4731);
  });
});
0

Kirill Mokevnin

А на что ругается в после прогона тестов?

0

Sergei

parse_number_test.js

/* global require describe it module _ assert*/
require("./test_helper.js");

describe("Numbers", function() {
  "use strict";

  it("parse number from string", function() {
    var someString = "321string";
    var number;

    // BEGIN
number = parseInt(someString);
    // END

    assert.equal(number, "321");
  });
});
0

Sergei

1) Numbers convert string value to number: ReferenceError: number is not defined

0

Sergei

И это в трех тестах

0

Kirill Mokevnin

Нужен полный текст ошибки, с названием файла и строкой.

1

Sergei

файл tofixed_test.js

  Numbers                                                            1) convert string value to number
  Numbers                                                               ✓ parse number from string 
  Numbers                                                               ✓ convert number into a string, keeping only two decimals 

 2 passing (7ms)
 1 failing

1) Numbers convert string value to number:
 ReferenceError: number is not defined  
 at Context.<anonymous> (/usr/src/app/conversion_test.js:11:10)
 at callFn (/usr/local/lib/node_modules/mocha/lib/runnable.js:251:21)
 at Test.Runnable.run (/usr/local/lib/node_modules/mocha/lib/runnable.js:244:7)
 at Runner.runTest (/usr/local/lib/node_modules/mocha/lib/runner.js:374:10)
 at /usr/local/lib/node_modules/mocha/lib/runner.js:452:12  
 at next (/usr/local/lib/node_modules/mocha/lib/runner.js:299:14)
 at /usr/local/lib/node_modules/mocha/lib/runner.js:309:7 
 at next (/usr/local/lib/node_modules/mocha/lib/runner.js:248:23) 
 at Object._onImmediate (/usr/local/lib/node_modules/mocha/lib/runner.js:276:5)  
 at processImmediate [as _immediateCallback] (timers.js:345:15) 


Makefile:2: recipe for target 'test' failed         
make: *** [test] Error 1                         
0

Александр-C Вагин

Добрый день! (не знаю, как вас зовут - к сожалению, вы не заполнили свой профиль) В данном куске логов прекрасно видно, что 2 из 3 тестов прошли:

Numbers                                                                1) convert string value to number
Numbers                                                                   ✓ parse number from string 
Numbers                                                               ✓ convert number into a string, keeping only two decimals 
2 passing (7ms)
1 failing

Галочкой отметились пройденные и внизу подпись - 2 прошло, 1 провалился.

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

at Context.<anonymous> (/usr/src/app/conversion_test.js:11:10)

Обратимся к вашему коду в файле conversion_test.js. Ошибка * ReferenceError: number is not defined* означает, что вы забыли объявить number. (это требуется из-за директивы "use strict";, подробнее о ней можно прочитать, например, тут) Смотря выше в код, можно заметить, что вы случайно закомментировали строку с объявлением number:

//var number;

Все что вам остается сделать - это убрать комментарий (напоминаю, что в javascript это //) и запустить заново тесты! :)

4

Sergei

Не знаю в чем тут дело, но задание неожиданно прошло. Спасибо, было интересно!

1

Sergei

Всё понятно, повнимательнее нужно и без спешки.

2

Sergei

Да-да я понял

1

Sergei

Только вопросик: большое значение имеет объявление переменной так var exmp; и далее exmp=....; и если сразу без объявления var exmp=....;

0

Александр-C Вагин

var exmp - объявление. exmp = ... - присваивание.

var exmp = ... - объявление и присваивание.

Записи равнозначны, но во второй меньше строчек кода :)

0

Sergei

Я это к тому: ни на что это не влияет или не будет влиять на что-либо в последствии?

0

Александр-C Вагин

Неа :) Но вот так никто не пишет:

var exmp;
exmp = ...;

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

1

Sergei

Спасибо!

2

Александр-C Вагин

Только var имеет несколько тонкостей, которые будут рассмотрены далее в курсе :)

2

Используйте Хекслет по максимуму!

  • Задавайте вопросы по уроку
  • Проверяйте знания в квизах
  • Проходите практику прямо в браузере
  • Отслеживайте свой прогресс

Зарегистрируйтесь или войдите в свой аккаунт

Отправляя форму, вы соглашаетесь c «Политикой конфиденциальности» и «Условиями оказания услуг»

Рекомендуемые программы

С нуля до разработчика. Возвращаем деньги, если не удалось найти работу.

Иконка программы Фронтенд-разработчик
Профессия
Разработка фронтенд-компонентов веб-приложений
1 декабря 8 месяцев
Иконка программы Python-разработчик
Профессия
Разработка веб-приложений на Django
1 декабря 8 месяцев
Иконка программы PHP-разработчик
Профессия
Разработка веб-приложений на Laravel
1 декабря 8 месяцев
Иконка программы Node.js-разработчик
Профессия
Разработка бэкенд-компонентов веб-приложений
1 декабря 8 месяцев
Иконка программы Верстальщик
Профессия
Вёрстка с использованием последних стандартов CSS
в любое время 5 месяцев
Иконка программы Java-разработчик
Профессия
Разработка приложений на языке Java
1 декабря 10 месяцев
Иконка программы Разработчик на Ruby on Rails
Профессия
Новый
Создает веб-приложения со скоростью света
1 декабря 5 месяцев