是否可以在jQuery中使用相同名称的两个不同变量?
我将jQuery链接到外部脚本。是否可以使用相同的字母名称生成两个变量?
即:
包含在compressed.js中:
var m = $$('li', s),
和
包含在http://www.google.com/jsapi中:
var m = "push",
这两者是否相互影响?
答案 0 :(得分:1)
如果2个变量在同一个范围内具有相同的名称,它们将发生冲突,后一个定义将覆盖前者。
如果由于某种原因你无法编辑变量名,你可以将整个代码块包装在单独的匿名函数中:
$(function(){.....});
只要您使用var
定义它们,就会将2个变量放在不同的范围内,这样它们就不会发生冲突。如果脚本的某些部分需要来自另一部分的变量,这可能会导致问题。
答案 1 :(得分:0)
不,m
和m2
在javascript中被视为两个不同的变量。
修改强>
根据您对原始问题m
的编辑,第二个m
肯定会相互影响。第二个变量定义正在删除先前的m
值。
具有相同范围和名称的两个变量将始终相互影响 - 或者,我想应该说:一个变量。
答案 2 :(得分:0)
好的,你的编辑会改变一些事情。如果它们的定义范围与第二个相同,则会覆盖第一个。可能在代码中多次独立使用相同的变量,但是在单独的函数/作用域中。
答案 3 :(得分:0)
简单的答案是否定的,它们不会相互影响。
它的工作原理是每个变量名称都是唯一的,因此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
从上面的示例中可以看出,如果修改已经设置的变量的值,则会更改该值,如果尚未设置该变量,则为其分配值;
一个很好的技巧,你应该学习自我调用匿名函数,我们使用它们的原因是创建一个框来将我们的代码放在里面,这样它就不会影响框外的任何其他东西。
实施例
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
的第二个实例如果它们具有相同的范围,将被覆盖。