Как изменить объявление переменной внутри функции в JavaScript

1

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

 function default()
 {
      var val="me";
      //others.....
 }

есть ли способ избежать этого, используя прототипирование

 function default(value)
 {
     var val=value;
     //others.....
 }

что-то вроде,

 default.prototype.val = "you";

повторно constracting

Теги:

4 ответа

1
Лучший ответ

Нет. Объявить переменную внутри функции (var myVar) невозможно, а затем открыть ее после завершения функции. Это связано с тем, что переменная создается внутри функциональной лексической области и не определена вне ее. Вот еще информация о том, как работает область действия: https://scotch.io/tutorials/understanding-scope-in-javascript

Что касается предлагаемого решения default.prototype.val это не работает, потому что функция по умолчанию является функцией и не имеет свойств или прототипа. Это то, что было бы объектом.

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

  • 0
    спасибо за ссылки, я вижу объект json, который может помочь.
  • 0
    Ваша ссылка очень полезна!
1

Попробуй это

function defaultfun (value="") {
  var val = "me";
  alert("new value:"+value+"\n old value:"+val);
}
defaultfun();
defaultfun("you");
1

function name(s) {
	return s || "me"
}

console.log(name())
console.log(name("you"))
1

Вы можете использовать значения по умолчанию для аргументов

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"
  • 0
    Это хорошо, и это решает текущую проблему, но не способно для более глубокой цели. like function default () {var val = "me"; var childfunction = function () {var что-то = ''; }}
  • 0
    @bdalina В чем проблема? Я не вижу там никаких проблем
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню