2016-01-19 5 views
0

У меня QML в Qt Creator 3.4.1, который каждую секунду обновляет значение функции JS. Каждый раз, когда функция запускается, а затем завершается. Теперь перед проблемой:Определение переменной Js

При первом запуске функции я хочу определить переменную. Это значение затем изменяется функцией и должно использоваться следующее раз, когда код запускается. Я могу только сделать переменную, которая переопределяет каждый раз, когда код работает снова

Простой пример заключается в следующем:

function func() { 
    var input = 10 

    input-- 

return input //input is now 9 
} 

В следующий раз код выполняется он должен использовать новое значение ввода, 9, вместо из 10. Как это определить?

ответ

2

Попробуйте глобальную переменную - она ​​удаляется при закрытии страницы.

var input = 10; 

function func() { 
    input--; 

    return input; 
} 
0

Вам нужно объявить переменную из функции. Переменные, объявленные внутри функций, запоминаются только во время выполнения функции (замыкание является исключением).

var input = 10; 

function func() { 

    input-- 

return input //input is now 9 
} 

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

var input; 

function func() { 
    if (input === undefined) { 
    input = 10; 
    } 

    input-- 

return input //input is now 9 
} 
0
function func(input) { 
return input--; //input is now input-1 
} 

, прежде чем были повторного объявления вклад = 10 при каждом запуске. вход -1 = 9. Вам нужно сделать что-то вроде выше ... или

function(i){ 
if(i.isNaN()){ i = 10; } 

return i--; 
} 
0

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

Что-то, что вы могли бы сделать, это определить функцию, которая возвращает функцию, которая соответствует вашим требованиям. Например,

var foo = (function(){ 
    var bar; 
    return function() { 
     if(bar === undefined){ 
      bar = 10; // First function call, define bar 
     } else { 
      bar--; // Every consecutive call, do something with bar 
     } 
    } 
})(); 

При первом выполнить Foo(), бар будет установлен до 10. Каждого последовательного вызова уменьшает бар на 1.

Смежные вопросы