Если вы объявляете getSelText
как var
, оно должно предшествовать любым утверждениям, в которых вы его используете.Просто сделайте оператор var getSelText = ...
первым оператором в функции run
.
Дополнительная информация:
var
операторов в Javascript "поднят""к вершине функции, в которой они объявлены, так что это:
function() {
var a = 42;
// Other stuff...
var b = 23;
}
действительно означает это:
function() {
var a = 42, b;
// Other stuff...
b = 23;
}
Другая похожая конструкция в Javascript - это оператор функции, в отличие отфункциональные выражения:
function() {
var fn1 = function() { return fn2(); }; // Function expression
alert(fn1());
// Function statement
function fn2() {
return "Hello from fn2";
}
}
Если вы запустили приведенный выше код, он успешно выдаст предупреждение «Hello from fn2».Это связано с тем, что операторы функций поднимаются на верхушку перед любым другим оператором в пределах области, в которой они объявлены. Как вы можете видеть, это может привести к путанице.Вероятно, лучшее соглашение, которому нужно следовать, - это использовать функциональные выражения и объявлять их в нужном вам порядке.