Можно ли иметь две разные переменные с одинаковыми именами? - PullRequest
0 голосов
/ 25 марта 2011

Возможно ли иметь две разные переменные с одинаковыми именами в jQuery?

Мой jQuery связан с внешними скриптами. Можно ли иметь две переменные, использующие одно и то же буквенное имя?

есть:

Содержится в сжатом файле .js:

var m = $$('li', s),

и

Содержится в http://www.google.com/jsapi:

var m = "push",

Эти двое влияют друг на друга?

Ответы [ 5 ]

1 голос
/ 25 марта 2011

Если 2 переменные с одинаковыми именами в одной и той же области видимости будут конфликтовать, последнее определение перезапишет первое.

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

$(function(){.....});

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

0 голосов
/ 25 марта 2011

Второй экземпляр m будет перезаписан, если они оба имеют одинаковую область действия.

0 голосов
/ 25 марта 2011

Простой ответ - нет, они не будут влиять друг на друга.

работает так, что каждое имя переменной уникально, поэтому m, m1, m2, m3,m4 никак не влияет друг на друга:

Однако, в зависимости от значения, установленного для переменной, вы можете обращаться и изменять данные следующим образом: m[2] причина этого в том, что mэто массив или объект какого-то рода, и вы можете получить доступ к отдельным элементам, используя [], что, вероятно, и приводит вас в замешательство.


Пример того, как переменные влияют друг на друга:

var a = 'hello';
var b = 'world';

alert(a); //hello
alert(b); //world

alert(a + b); //helloworld
alert(b + a); //worldhello

a = b;

alert(a); //world
alert(b); //world

b = 'hey';

alert(b); //hey

, как вы можете видеть из приведенных выше примеров, если вы измените значение переменной, которая уже была установлена, она изменит значение, если переменной еще не было установлено, ей присвоено значение;

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

var hey = 'hey';

(function(){
    var hey = 'bye'; //This is only effective inside the {}

    alert(hey); //You get 'bye';

    //Access the global scope
    alert(window.hey); //You get 'hey';

    //modifiy the external scope
    window.hey = 'modified from within the function';

    //expose vars inside the function scope to the global window:
    window.exposed = hey; //Remember hey is internal and is set to 'bye';
})();

alert(exposed); //'bye';
alert(hey); //'modified from within the function'

надеюсь, теперь вы понимаете немного больше

0 голосов
/ 25 марта 2011

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

0 голосов
/ 25 марта 2011

Нет, m и m2 считаются двумя разными переменными в javascript.

РЕДАКТИРОВАТЬ:

На основании вашего редактирования вашего первоначального вопроса m и 2 m ОПРЕДЕЛЕННО влияют друг на друга.Второе определение переменной стирает предыдущее значение m.

Две переменные с одинаковой областью действия и именем всегда будут влиять друг на друга - или, я полагаю, следует сказать: одна переменная.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...