ECMAScript 6介绍了该let声明.我听说它被描述为"本地"变量,但我仍然不太确定它与var关键字的行为有何不同.
有什么区别?何时应该let使用var?
是否可以在JavaScript函数中定义全局变量?
我想在其他函数中使用trailimage变量(在makeObj函数中声明).
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title></title>
<script type="text/javascript">
var offsetfrommouse = [10, -20];
var displayduration = 0;
var obj_selected = 0;
function makeObj(address) {
**var trailimage = [address, 50, 50];**
document.write('<img id="trailimageid" src="' + trailimage[0] + '" border="0" style=" position: absolute; visibility:visible; left: 0px; top: 0px; width: ' + trailimage[1] + 'px; height: ' + trailimage[2] + 'px">');
obj_selected = 1;
}
function truebody() {
return (!window.opera && document.compatMode && document.compatMode != "BackCompat") ? …Run Code Online (Sandbox Code Playgroud) 在许多情况下,如果您将它们遗漏,JavaScript解析器将为您插入分号.我的问题是,你把它们遗弃了吗?
如果您不熟悉规则,则会在Mozilla网站上对分号插入进行描述.这是关键点:
如果第一至第n 个 JavaScript程序形式的令牌是语法上有效,但第一至第n + 1个ST令牌是不与存在n之间的换行符个令牌和第n + 1个ST令牌,则解析器尝试将所述n之间的虚拟分号令牌之后再次解析程序次和第n + 1个ST令牌.
这种描述可能不完整,因为它没有解释@ Dreas的例子.任何人都有完整规则的链接,或者看看为什么这个例子得到一个分号?(我在JScript.NET中尝试过.)
此stackoverflow问题是相关的,但仅涉及特定方案.
以下代码是JavaScript代码.我试图了解JavaScript中的函数范围并在此处阅读文章.我正在复制下面的代码 -
var cow = "purple"; // just a random cow
var f = function (x) {
var r = 0;
cow = "glue";
if (x > 3) {
var cow = 1; // a local variable
r = 7;
}
return r;
};
var z = f(2);
alert(cow); // returns purple
Run Code Online (Sandbox Code Playgroud)
我不太明白为什么字符串"紫色"会被警告.该行cow = "glue";应将cow变量的值设置为"glue".如果我删除if块,然后在最后一个语句中警告cow,我看到字符串"glue"被警告.
当调用f(2)时,不输入if代码块并且其中没有任何内容被执行,那么为什么我会看到不同的结果呢?即为什么在最后一个语句中警告牛现在返回字符串"紫色"?