Непонятная ошибка в JS

182
08 февраля 2018, 19:05
function range(from, to) {
        var massive = [];
        var x = 0;
        for (i = from; i <= to; i++) {
            massive[x] = i;
            x++;
        }
        return massive;
    }
    function sum(range(1, 10)) {
        for (i = 0; i <= range.length; i++) {
            sum = sum + range[i];
            console.log(sum);
        }
    }

Консоль находит ошибку во второй функции при её вызове.

Answer 1

Вот рабочий пример:

    function range(from, to) { 
    	var arr = []; 
        for (var i = from; i <= to; i++) { 
            arr.push(i); 
        } 
        return arr; 
    } 
     
    function sum() { 
    	var arr = range(1, 10); 
        var sum = 0; 
     
        for (var i = 0; i < arr.length; i++) { 
            sum = sum + arr[i]; 
        } 
    	console.log(sum); 
    } 
    sum();

55

В JS нет такого понятия, как именованный массив (это не PHP), есть либо массив, либо объект (в данном случае самым удачным словом вместо "объекта" будет "хеш").

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

Ну а вызов функции при декларации другой функции это почти криминал.

В JS допустимо передавать функции в качестве параметров (для последующего использования внутри функции, в которую вы передаете такую функцию), но без invoking, т.е. без ее вызова:

function myFunc() {
    alert('test');
}
function anotherFunc(callMe) {
    callMe();
}
anotherFunc(myFunc);
Answer 2
function sum(range(1, 10)){....}

В скобках при определении функции должны передаваться параметры, а вы делаете вычисления... правильно:

function sum(ar){....}

а уже при вызове можно и вычисления:

s = sum(range(1, 10));
READ ALSO
var someArray = [&ldquo;a&rdquo;, &ldquo;b&rdquo;, &ldquo;c&rdquo;]; someArray.splice(someArray.length - 1, 1, &ldquo;d&rdquo;) //[&ldquo;a&rdquo;, &ldquo;b&rdquo;, &ldquo;c&rdquo;, &ldquo;d&rdquo;]

var someArray = [“a”, “b”, “c”]; someArray.splice(someArray.length - 1, 1, “d”) //[“a”, “b”, “c”, “d”]

Так почему же при someArray = ["a", "b", "c", "d"], someArraysplice(someArray

183
Проблема с калькуляторм

Проблема с калькуляторм

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

180
Компактная запись .querySelectorAll()

Компактная запись .querySelectorAll()

Всем привет! Допустим есть код:

173
Каким образом делаются переходы?

Каким образом делаются переходы?

Как реализуются такие переходы, как на скриншоте?

198