Javascript 当Google Chrome找到两个同名的变量或函数时,它会做什么?
当google chrome发现两个同名的变量时,我只是在想google chrome会做什么,在我的例子中,这是:这是代码的一小部分 我的问题是放置Cannon 1(其id为“Cannon1”)可以正常工作,但放置gold collector(其id为“goldC1”)不行,这里发生了什么,我如何修复它 注: “警报”用于测试代码。 该代码在firefox中运行时有效。 我的谷歌浏览器版本是30.0.1599.101Javascript 当Google Chrome找到两个同名的变量或函数时,它会做什么?,javascript,css,html,google-chrome,Javascript,Css,Html,Google Chrome,当google chrome发现两个同名的变量时,我只是在想google chrome会做什么,在我的例子中,这是:这是代码的一小部分 我的问题是放置Cannon 1(其id为“Cannon1”)可以正常工作,但放置gold collector(其id为“goldC1”)不行,这里发生了什么,我如何修复它 注: “警报”用于测试代码。 该代码在firefox中运行时有效。 我的谷歌浏览器版本是30.0.1599.101 请随时提出任何问题,我们会尽快回答您的问题,谢谢。Chrome,或者更准确地
请随时提出任何问题,我们会尽快回答您的问题,谢谢。Chrome,或者更准确地说,V8,按照规范要求执行(警告:它真的很沉重)
var
如果您有多个var x代码>在同一范围内为同一个符号声明,这是无关的,第二个符号根本没有效果但是,注意var x=1
(例如,带有初始值设定项)实际上是var x代码>和,分别为x=1代码>。只有var x代码>零件将被忽略。如果您重复此操作,则不会执行分配
因此:
…因为该代码真正代表了这一点:
var x;
x = 5;
console.log(x); // 5
x = 42;
console.log(x); // 42
更多:(我博客上的文章)
函数声明
如果在同一作用域中有多个使用相同名称的函数声明,则最后一个将获胜
foo(); // "foo the second!"
function foo() {
console.log("foo the first!");
}
function foo() {
console.log("foo the second!");
}
函数声明不同于函数表达式。以上是声明。我们知道这是因为函数引用没有立即在表达式中使用(它不在=
的右侧,也没有作为参数传递到另一个函数中,等等)。函数声明发生在执行进入定义它们的上下文时,在任何分步代码运行之前
函数表达式
另一方面,当逐步执行到达函数表达式时,会对其进行处理,就像任何其他表达式一样:
//foo(); // This would be an error
var foo = function() {
console.log("foo the first!");
};
foo(); // "foo the first!"
foo = function() {
console.log("foo the second!");
};
foo(); // "foo the second!"
你能在这里举个例子吗?我不会点击你的dropbox中的任何东西。JSFIDLE中的一个例子非常好,即使你知道某个特定的浏览器总是使用第一个或最后一个,这不是一个好主意。使用switch语句,或者了解是什么,如果是什么。Scon:代码必须在问题本身中。这就是我认为会发生的事情,而且很容易测试。
//foo(); // This would be an error
var foo = function() {
console.log("foo the first!");
};
foo(); // "foo the first!"
foo = function() {
console.log("foo the second!");
};
foo(); // "foo the second!"