我正在尝试调用文字函数,但出现奇怪的行为。
考虑下面返回的代码true
。
23 === (23)
当我写的时候尝试以下方法。
(23).toFixed(2)
我得到了预期的结果,_23.00_
但是当我尝试时出现23.toFixed(2)
此错误。
语法错误:意外的令牌非法
JavaScript如何评估无法理解的表达式,为什么会出现此错误?
DecimalLiteral ::
DecimalIntegerLiteral . DecimalDigits(opt) ExponentPart(opt)
. DecimalDigits ExponentPart(opt)
DecimalIntegerLiteral ExponentPart(opt)
DecimalIntegerLiteral ::
0
NonZeroDigit DecimalDigits(opt)
A
DecimalLiteral
(一个数字)是一串十进制数字,可能跟一个点,然后可能跟着其他数字(例如,所有这些都可以跟一个指数e12
)。换句话说,42.
是合法的,等于42
和3e2
等于300
。
请注意,如果我们有一个点,我们希望它后面跟着更多数字/指数,或者什么都不跟。但是,这是重要的部分, 点是数字的一部分
。记住这一点,因为我们开始研究如何处理点运算符obj.prop
。
第11.2.1节“属性访问器”描述了成员访问的点和括号符号:
MemberExpression . IdentifierName
CallExpression
是函数调用,我们不在乎。请注意,我们期望的是MemberExpression
(可能是DecimalLiteral
-,但请不要相信我,看一下我是否正确)。
看到那个小点吗?向前跳并说“好吧,这里的方案中有一个点……而其中有一个点4.foo
……那么为什么会有错误?”是合乎逻辑的。my,我在这些句子中使用的假想朋友,您忘记了DecimalLiteral
样子!让我们看两个例子,看看会发生什么。
42.foo
^
尖号代表我们所处的角色。到目前为止,我们在里面DecimalLiteral / DecimalIntegerLiteral / NonZeroDigit
(这是一个很大的入口)。让我们转到下一个字符:
42.foo
^
仍然是数字的一部分,完全有效DecimalDigit
。
42.foo
^
好的,所以我们不DecimalIntegerLiteral
参加了。这是该方案的同一图:
DecimalIntegerLiteral . DecimalDigits(opt) ExponentPart(opt)
^
所以我们在一个点上,这是一个数字的完全有效部分。现在,我们将其 作为数字的一部分使用 ,然后继续:
42.foo
^
f
既不是DecimalDigits
也不是的一部分ExponentPart
,我们现在已经不存在了。所以现在怎么办?那是f
什么
它不是任何东西的一部分。也许是物业访问者?让我们看一下该方案:
MemberExpression . IdentifierName
^
我们肯定在MemberExpression
,但是我们没有在其后的点-
该点已经是数字的一部分。我们遇到了语法错误:我们停止执行并抛出错误。希望你不要住在玻璃屋里。
希望现在您了解为什么42..foo
有效。一旦离开MemberExpression
,我们将面临另一个圆点:
42..foo
^
MemberExpression . IdentifierName
^
其次是完全合法的IdentifierName
。
当然,还有其他几种方法可以将点与数字分开。如您所展示,一种方法是将文字括在括号中:(42).foo
。当我们到达圆括号的末端时,我们就不在了,而是在MemberExpression
圆点上。另一种方法是插入一个空格:42.foo
,因为空格不能成为数字的一部分,并且对于解析器而言是中立的,所以不会引发错误。
本文向大家介绍浅析成员函数和常成员函数的调用,包括了浅析成员函数和常成员函数的调用的使用技巧和注意事项,需要的朋友参考一下 在Coordinate类中,有一个Display()成员函数和一个Display() const常成员函数,代码如下 Display()成员函数和一个Display() const常成员函数是互为重载的,那么如果我们直接像下面这样调用该方法,会调用的是哪个呢? 那么运行下程序
请考虑以下类: 现在,应该启动执行的线程,因此它的实现方式如下: 这在g++-4.6.3中是完美无缺的,但在g++-4.5.2中就不行了,错误消息是 include/C++/4.5.2/Functional:180:9:error:必须使用“.”或“->”调用std::declval with_tp=void(foo::*)(长无符号int),typename std::add_rvalue_re
我使用Laravel 8与Livewire。 我创建了这个来显示项目列表,用户也可以应用过滤器。在加载数据时,每页显示10条记录。然而,当我尝试单击下一页或特定的页码时,我得到错误调用成员函数链接()数组... 我也在使用存储库,它被注入了livewire组件。
我有一个密码: 我正在尝试使用toSql()将laravel查询转换为mysql 但我犯了一个错误,比如 对整数调用成员函数toSql() 然后我尝试了 但它返回的输出为'false',我无法得到预期的输出。我不知道为什么会发生这种情况。任何帮助都将不胜感激。 预期产出:
问题内容: 因此,我正在重构代码以实现更多的OOP。我设置了一个类来保存页面属性。 稍后,我像这样调用set_page_title()函数 当我收到错误消息时: 调用非对象上的成员函数set_page_title() 那我想念什么呢? 问题答案: 这意味着它不是对象的实例。我们可以看到您用来初始化变量的代码吗? 当您期望特定的对象类型时,还可以使用PHP的类型提示功能 Docs 在违反逻辑时得到错
我有5个类别Categoria、Produto、Subcategoria、submoduto和Comanda,对于所有类别中的执行搜索,我尝试提供如下服务: 我尝试访问ComandaController上的服务 然后symfony返回错误 我services.yml有 怎么了?