【发布时间】:2010-11-11 19:24:59
【问题描述】:
我正在尝试使用const 声明一堆常量。我的问题是在 Firebug 控制台中测试代码会引发错误,抱怨“重新声明 const foo”。
我尝试将其包装在 try{}catch(e){} 块中,但这并没有帮助,甚至在尝试使用以下代码绕过它时(为了清楚起见,发布减去所有 console.info()“调试”调用) 第二次运行还是报错:
if(!chk_constsDeclaredYet) {
var chk_constsDeclaredYet = true;
const foo="bar";
}
我的问题是,虽然 const 在 if(){} 中,但当代码第二次“运行”时,为什么还要查看 const foo?
注意:代码将在 firebug javascript 控制台中运行,我想要实现的工作流程是:
- 将代码粘贴到firebug控制台
- 点击运行(创建常量)
- 我在控制台中对代码进行了编辑而不重新加载页面(常量仍然在页面上下文中定义)
- 再次点击运行(使用 if(){} 来避免重新声明常量,如果它们已经在之前的运行中声明过)
- 从 (3) 重复
萤火虫输出:
//FIRST RUN::
>>> console.group() console.info('--code start--'); ...console.info('--code end--'); console.groupEnd()
--code start--
chk_constsDeclaredYet = undefined
foo = undefined
--if()--
--if() running..--
--end if()--
chk_constsDeclaredYet = true
foo = bar
--code end--
//SECOND RUN::
>>> console.group() console.info('--code start--'); ...console.info('--code end--'); console.groupEnd()
TypeError: redeclaration of const foo { message="redeclaration of const foo", more...}
【问题讨论】:
-
注意:我并不担心对 const atm 的支持 - 现在只是玩弄/试验,尽管指向哪些浏览器支持它的指示器的指针将不胜感激 =P 如果不是,它'将只是我下一次搜索引擎访问的主题=]
-
developer.mozilla.org/en/JavaScript/Reference/Statements/const 在 Firefox 中,部分支持 Opera 和 Safari(可能还有 Chrome),但不支持 IE
-
@Šime Vidas 谢谢,我看到了,但不太明白“部分支持”的确切含义 =P
-
是的,我也喜欢它说部分支持。基本上,这意味着你必须自己测试:)
-
@Šime Vidas bleurgh testing.. ;) 也许稍后但我现在 cba (只是被动的'哦,我想知道这是否适用于 chrome/opera 用户脚本'的想法.. 不重要完全 =]
标签: javascript firebug constants