【发布时间】:2012-05-05 23:28:39
【问题描述】:
我正在学习 JavaScript,我最近了解了 JavaScript 计时事件。当我在W3Schools 了解setTimeout 时,我注意到一个我以前没有遇到过的奇怪数字。他们使用双引号,然后调用函数。
例子:
setTimeout("alertMsg()", 3000);
我知道 JavaScript 中的双引号和单引号表示字符串。
我也看到我可以这样做:
setTimeout(alertMsg, 3000);
带括号的是引用,不带括号的是复制。当我使用引号和括号时,它会变得很疯狂。
如果有人能向我解释这三种使用setTimeout的方式之间的区别,我会很高兴:
带括号:
setTimeout("alertMsg()", 3000);
没有引号和括号:
setTimeout(alertMsg, 3000);
第三个只使用引号:
setTimeout("alertMsg", 3000);
注意:setTimeout 参考的更好来源是 MDN。
【问题讨论】:
-
@Jefffrey w3fools 网站并没有说那里的内容是错误的,只是它可能已经过时并且缺少一些新的东西。应该可以用作(或学习)核心内容的参考。我可以理解人们对他们试图看起来像是 w3 一部分的方式感到沮丧,但这并没有减损内容。它布局合理,易于阅读,示例清晰,非常适合新手。
-
@Matthew “不过,我们认为 W3Schools 正在以不准确的信息伤害社区。” -- 在前三行内。
-
@Jefffrey 是的,我看到了,但是在“W3Schools 很麻烦”部分中,他们解释了他们不喜欢的地方,他们给出的三个原因都与此无关不准确的信息。他们没有任何实际“错误”的例子。他们的抱怨是他们没有明确表示他们不隶属于 w3,他们对未经认可的认证收费,并且他们不会快速更新新内容(例如 html 5)。
-
@Matthew, 过时的信息,在 Javascript、SQL 或 PHP 等精致语言中,引导大量有抱负的程序员坚持使用旧的和潜在危险的技术(例如 PHP 的
mysql_扩展)其中 SO 问题流只是一个示例。 IIRC 在 SQL 部分也有一些非常细微的错误,但距离我上次访问该网站已经快一年了,其中很多可能也已修复。即使以上所有内容都很完美,我仍然不会宣传一个试图用证书欺诈来欺骗人们的网站。 -
撇开不正当的认证不谈,它是一个不错的参考资源,而且对于 SO 的全部意义来说,去谴责它们会适得其反。
标签: javascript settimeout