我在chrome开发人员控制台中编写了一些随机代码。令我惊讶的是,chrome让我用它let
作为变量名,因为let
保留关键字完全不对。我需要了解为什么会这样。
场景:
var const = 78 //throws an error as expected
var function = 46 //throws an error as expected
var let = 56 //didn't throw an error :O
let //prints 56, which is wrong because 'let' is a keyword
let ab = 90
ab //prints 90 as expected
此缺陷存在于中node
。但是,当我在Babel
REPL中
尝试时,会抛出错误。
我认为这与Google v8有关
Mohsen Azimi的这篇文章可以很好地说明其背后的原因。这是它的快速摘要。
以下关键字在JavaScript规范中定义为FutureReservedWord
:
implements interface let package private
protected public static yield
在普通模式下,它们可以用作变量名而不会出现错误;但是,在严格模式下,它们被视为保留字,并且将引发以下错误:
SyntaxError: Cannot use the reserved word 'let' as a variable name in strict mode.
这样一来,ES2015之前的代码就不会中断-如果有人let
在旧版应用程序中命名了许多变量,那么如果JS规范突然中断了所有操作,他们可能会不满意。
问题内容: 我正在尝试将表名传递到我的mysql存储过程中,以使用此sproc从其他表中进行选择,但是它不起作用… 这是我正在尝试的: 我也尝试过不带@符号,它只是告诉我TableName不存在…我知道:) 问题答案: 它取决于DBMS,但是这种表示法通常需要Dynamic SQL,并且会遇到一个问题,即函数执行时的返回值取决于输入。这给系统带来了麻烦。作为一般规则(因此可能会有例外),DBMS不
问题内容: 我有一个分配了字符串的变量,我想根据该字符串定义一个新变量。 问题答案: 你可以使用exec:
问题内容: 我有以下带有变量的类,和。是一个关键字。如果要在下面的init方法中使用它,编写它的正确方法是什么? 更多上下文:该类明确需要该变量,因为它是另一个开发人员用另一种语言编写的POST端点所需的json的一部分。因此,更改变量名称是不可能的。 JsonAware代码: GenericEncoder代码: 问题答案: 如注释中所述,它是一个Python关键字,因此您不能将其用作变量名或属性
问题内容: 假设我们有这样的东西: 问:如何使test_foo3()进行测试,但不会引发MyError?很明显,我可以测试一下: 但我想通过pytest.raises()进行测试。有可能吗?例如:在某种情况下,该函数“ foo”根本没有返回值, 恕我直言,以这种方式进行测试可能很有意义。 问题答案: 如果测试引发任何意外的异常,则测试将失败。您只需调用foo(7),就可以测试没有引发MyError
问题内容: 我正在尝试执行此查询: 这将产生以下错误: Msg 1087,第16级,状态1,第5行 必须声明表变量“ @tablename”。 动态填充表名的正确方法是什么? 问题答案: 对于静态查询(如您的问题中的查询),表名和列名必须是静态的。 对于动态查询,应动态生成完整的SQL,并使用sp_executesql执行它。 这是一个脚本示例,用于比较不同数据库的相同表之间的数据: 静态查询:
卷值不允许附加属性('${VOLUME_NAME}‘意外) 任何帮助都将不胜感激。