问题标签 [bareword]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
521 浏览

javascript - 使用裸词手动声明 JavaScript 对象

我是 JavaScript 的初学者,正在尝试重构 API,但遇到了一个奇怪的问题。

我使用node解释器来测试一些我想在我的重新设计中加入的代码,但是我遇到了一些意想不到的行为。

考虑在节点解释器中输入以下内容:

我期待一个 ReferenceError,如下所示。

下一个

现在考虑一个 JSON 样式的对象:

奇怪的是,引号被丢弃在 的键上x。我愿意忽略这一点,尽管它令人困惑。

最后,

没有引号,解释器不会抱怨并产生与引号相同的结果。

还注意到这种模式key总是作为字符串返回:

注意到这种行为,我尝试Bar在我的 class中编写一个方法,Foo定义如下:

本质上Bar只是将键值对添加attr:val到类型的对象中Foo

我尝试使用以下代码测试此代码:

谁能向菜鸟解释这种行为?当可以手动完成时,无法在方法中使用裸词作为键是非常令人沮丧的。

0 投票
2 回答
757 浏览

perl - 从另一个 Perl 脚本内部调用 Perl 搜索和替换命令时不起作用

我是 Perl 的初学者。我正在使用下面的 Perl 命令在我的 tcl 脚本中搜索和替换“/$”序列。直接在 linux 命令行上使用时效果很好。

我正在调用使用系统命令在另一个 Perl 脚本中调用上面的 Perl One 衬里,并且只使用“`”Back Tick。

我收到以下错误。请帮助解决这个问题。

我不知道我是否可以像 SED 命令一样使用任何其他分隔运算符,例如 % 和 #,但是,当我使用 '%' 运算符进行分隔时,我没有看到错误,但工作没有完成。

对于网络上的“$”变量这个特定问题,我找不到足够的结果。任何帮助表示赞赏。

0 投票
2 回答
541 浏览

string - 在 Perl 中使用裸词有什么陷阱?

我知道在引用运算符(q//、qq//)、哈希键等中可以将裸词用作字符串。我个人对此并不太兴奋,因为我无法克服对文字的心理期望字符串应该被引用,就像在 C、C++ 中一样。但是,如果我要混合使用带引号的字符串和裸词,我想确保我不会意外地在裸词在运行时无法正常运行的情况下误伤自己。

请排除“use strict”会在编译时将它们作为错误捕获的用例。我总是启用“严格”模式,所以我不关心这些情况。

以下是基于提供的答案和评论的代码说明:

输出:

看来,关于hash keys,在所有情况下,裸词的行为都符合预期。要覆盖该行为,我们需要明确消除歧义。

0 投票
4 回答
145 浏览

perl - 使用运行 perl s/("|')// 命令的 Windows 批处理文件/命令行,如何防止在操作员预期错误的位置找到裸字?

我已经阅读了其他帖子,但不知何故,解决方案不起作用。

我试过了

我尝试将所有其他可能的有趣字符与转义字符一起使用,但没有成功。我知道问题出在 " 字符上,因为我在同一个 FOR 循环中运行这个 perl 命令的变体。

这是错误消息中最重要的语法所说的内容:

我不知道 E 是因为接近还是因为“混乱”而被包括在内。我可以尝试一下。

谁能帮我弄清楚如何安全地通过这个 S&R 命令?先感谢您。

编辑:我什至无法正确评论......

最近的尝试是

没有成功。错误信息是

0 投票
2 回答
1417 浏览

perl - Perl:在操作员期望的位置找到裸字

我正在尝试使用 perl 来替换这样的字符串:

如果DIGN=+q4T/h/B8Saf0im3LtBevNvMPsd1PRG5Tz+Iq/uwjXA=我收到以下语法错误:

我想这与/h处于变量 DIGN 中有关。有没有办法逃避那些保留字?

0 投票
2 回答
118 浏览

perl - 为什么在没有粗逗号和严格的“use”行上允许使用前导连字符选项?

为什么以下use行是合法的 Perl 语法?(改编自 POD for parent;在 Cygwin 上的 Perl 5.26.2 x64 上测试。)

在 下-MO=Deparseuse线变为

但我无法从use文档 中看出引用的-norequire来源。

  • 如果use strict没有生效,我会理解的。裸词norequire变成字符串 "norequire"一元减号会变成字符串"-bareword",而结果字符串会进入use导入列表。例如:

    /li>
  • 同样,如果有一个粗逗号,我会理解的。 -foo => bar变为"-foo", bar因为=> 变为foo"foo"然后一元减号再次发挥其魔力。例如:

    /li>

这两个示例都为该use行产生了相同的 deparse。但是,两者都引用了原始示例没有引用。我遗漏了什么使原始示例(带strict,不带=>)合法?谢谢!

0 投票
2 回答
601 浏览

perl - 为什么有些用户在 Perl 中引用类名?

查看Type::Tiny,我看到调用中的类名在Type::Tiny->new官方文档中被引用,

为什么是这样?这仅仅是风格吗?这种做法是否有任何性能影响?

0 投票
1 回答
270 浏览

perl - 为什么这个关于 strict subs 的错误只会在 autodie 下触发?

给定这样的代码,我没有收到任何警告。

鉴于此代码,我得到一个致命错误。

在 ./test.pl 第 6 行使用“strict subs”时,不允许使用裸词“STDOUT”。由于编译错误,./test.pl 的执行中止。

为什么autodie指向严格的潜艇作为这个错误的根源——当在第一个例子中明确严格并且我没有错误时。

错误diagnostics解释如下..

在 ./test.pl 第 7 行使用“strict subs”时,不允许使用裸词“STDOUT”。由于编译错误,./test.pl 的执行中止 (#1) (F) 使用“strict subs”时,a bareword 只允许作为子例程标识符,在大括号中或“=>”符号的左侧。也许您需要预先声明一个子程序?

这都可以通过做来解决

那么它不是一个bareword,但是为什么bareword特别适用于open without autodie,而不是autodie?这里发生了其他事情吗?

0 投票
2 回答
71 浏览

perl - 从严格的编译指示中免除一段 perl 代码

我有一段遗留的 perl 代码,它使用perl DBI和类似的结构

其中 SQL_BLOB 是一个裸词。我想在同一个文件中使用严格的编译指示,但它会抱怨裸词。('使用“strict subs”时不允许使用裸词“SQL_BLOB”')我可以以某种方式免除这一行的严格检查吗?