Вопрос №183 от пользователя Sergei в уроке «Числа в JavaScript», курс «Введение в Javascript»
Здравствуйте, var number = parseInt(someString, 10); - разве так не работает
Здравствуйте, это вопрос?
Сам не знаю вопрос ли это? Я должен преобразовать строку в число, var someString = Number("42.4731"); - это правильно или с синтаксисом у меня никак
Да, var number = parseInt(someString, 10);
должно сработать. Также можно опустить 10 в данном случае.
извините, что-то я совсем запутался: нужно строку someString конвертировать в число, для этого я создаю новую переменную и var someString1 = Number(someString); а затем присваиваю значение someString1 переменной number, правильно ли так?
Зачем лишний шаг? number = Number(someString);
и все
Вот у меня решения из трёх файлов: 1 var number = Number(someString); 2 var number = parseInt(someString); 3 var number = someNumber.toFixed(2); а, все равно ругается на неработоспособность, где же ошибка?
Запускайте тесты чтобы увидеть где ошибка. Чтобы запустить тесты нужно нажать кнопку "run" в верхнем левом углу редактора (над файловым деревом) или ввести в терминале make test
.
спасибо
Вот что у меня получается: /* 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);
}); }); Но это не работает
Что тесты пишут?
number = Number(someString);
в упражнении conversion_test.js – это правильное решение, тесты проходят
возможно, вы ошиблись в других упражнениях (файлах)
В третьем тесте у меня: /* 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 не определена
Ага, значит нужно определить number :) То есть вместо number = someNumber.toFixed(2);
надо написать var number = someNumber.toFixed(2);
или просто где-нибудь выше определить переменную так: var number;
(как в других файлах).
С одной стороны, да, странно, что в разных файлах разные подачи. Но зато теперь вы знаете что такое определение переменной и как ее определять, а также как писать код с использованием TDD.
А, извиняюсь, не заметил что вы сделали var number;
. Пожалуйста, на будущее, используйте форматирование кода (вот описание.
Ваш код верный, тесты проходят.
Зато задания не проходят
Приложите пожалуйста код в отформатированным виде, чтобы понять где не так.
/* 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");
});
});
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);
});
});
А на что ругается в после прогона тестов?
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");
});
});
1) Numbers convert string value to number: ReferenceError: number is not defined
И это в трех тестах
Нужен полный текст ошибки, с названием файла и строкой.
файл 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
Добрый день! (не знаю, как вас зовут - к сожалению, вы не заполнили свой профиль) В данном куске логов прекрасно видно, что 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 это //
) и запустить заново тесты! :)
Не знаю в чем тут дело, но задание неожиданно прошло. Спасибо, было интересно!
Всё понятно, повнимательнее нужно и без спешки.
Да-да я понял
Только вопросик: большое значение имеет объявление переменной так var exmp; и далее exmp=....; и если сразу без объявления var exmp=....;
var exmp - объявление. exmp = ... - присваивание.
var exmp = ... - объявление и присваивание.
Записи равнозначны, но во второй меньше строчек кода :)
Я это к тому: ни на что это не влияет или не будет влиять на что-либо в последствии?
Неа :) Но вот так никто не пишет:
var exmp;
exmp = ...;
В задании это было сделано, чтобы показать, что нужно в эту переменную записать ;)
Спасибо!
Только var
имеет несколько тонкостей, которые будут рассмотрены далее в курсе :)
Используйте Хекслет по максимуму!
- Задавайте вопросы по уроку
- Проверяйте знания в квизах
- Проходите практику прямо в браузере
- Отслеживайте свой прогресс
Зарегистрируйтесь или войдите в свой аккаунт
С нуля до разработчика. Возвращаем деньги, если не удалось найти работу.







