У меня есть функция и локальная переменная, объявленные внутри нее, я не хочу объявлять ее глобальной, потому что некоторые функции также используют значение по умолчанию
function default()
{
var val="me";
//others.....
}
есть ли способ избежать этого, используя прототипирование
function default(value)
{
var val=value;
//others.....
}
что-то вроде,
default.prototype.val = "you";
повторно constracting
Нет. Объявить переменную внутри функции (var myVar
) невозможно, а затем открыть ее после завершения функции. Это связано с тем, что переменная создается внутри функциональной лексической области и не определена вне ее. Вот еще информация о том, как работает область действия: https://scotch.io/tutorials/understanding-scope-in-javascript
Что касается предлагаемого решения default.prototype.val
это не работает, потому что функция по умолчанию является функцией и не имеет свойств или прототипа. Это то, что было бы объектом.
Как указывали другие, вы можете передать переменную или использовать значения по умолчанию, но, похоже, вы спрашивали о доступе к переменной, созданной внутри функции, и это невозможно. Вам нужно вернуть значение или передать переменную, которая изменяется функцией.
Попробуй это
function defaultfun (value="") {
var val = "me";
alert("new value:"+value+"\n old value:"+val);
}
defaultfun();
defaultfun("you");
function name(s) {
return s || "me"
}
console.log(name())
console.log(name("you"))
Вы можете использовать значения по умолчанию для аргументов
function default(value ="you")
{
var val=value;
//others.....
}
https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Functions/Default_parameters
использование будет чем-то вроде этого
default(); // value will be "you"
default("me"); value will be "me"