是否可以使用两个具有相同名称的不同变量?

时间:2011-03-25 14:01:35

标签: javascript jquery variables

是否可以在jQuery中使用相同名称的两个不同变量?

我将jQuery链接到外部脚本。是否可以使用相同的字母名称生成两个变量?

即:

包含在compressed.js中:

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

包含在http://www.google.com/jsapi中:

var m = "push",

这两者是否相互影响?

5 个答案:

答案 0 :(得分:1)

如果2个变量在同一个范围内具有相同的名称,它们将发生冲突,后一个定义将覆盖前者。

如果由于某种原因你无法编辑变量名,你可以将整个代码块包装在单独的匿名函数中:

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

只要您使用var定义它们,就会将2个变量放在不同的范围内,这样它们就不会发生冲突。如果脚本的某些部分需要来自另一部分的变量,这可能会导致问题。

答案 1 :(得分:0)

不,mm2在javascript中被视为两个不同的变量。

修改

根据您对原始问题m的编辑,第二个m肯定会相互影响。第二个变量定义正在删除先前的m值。

具有相同范围和名称的两个变量将始终相互影响 - 或者,我想应该说:一个变量。

答案 2 :(得分:0)

好的,你的编辑会改变一些事情。如果它们的定义范围与第二个相同,则会覆盖第一个。可能在代码中多次独立使用相同的变量,但是在单独的函数/作用域中。

答案 3 :(得分:0)

简单的答案是否定的,它们不会相互影响。

它的工作原理是每个变量名称都是唯一的,因此mm1m2m3m4对任何影响都没有彼此如此:

但是,根据设置给变量的值,您可以访问和更改数据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

从上面的示例中可以看出,如果修改已经设置的变量的值,则会更改该值,如果尚未设置该变量,则为其分配值;

一个很好的技巧,你应该学习自我调用匿名函数,我们使用它们的原因是创建一个框来将我们的代码放在里面,这样它就不会影响框外的任何其他东西。

实施例

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'

希望你现在了解更多

答案 4 :(得分:0)

m的第二个实例如果它们具有相同的范围,将被覆盖。