三元运算符改变“true”字面意义上的真实

发布于 2024-10-30 13:23:19 字数 468 浏览 2 评论 0原文

我正在尝试使用三元运算符将字符串文字分配给变量,并在 pre 块中使用以下代码:

texta = "approve";
textd = "deny";
aAction = texta eq "approve" => "true" | "false";
dAction = textd eq "approve" => "true" | "false";

但是,这就是 JavaScript 中遇到的情况:

var texta = 'approve';
var textd = 'deny';
var aAction = true;
var dAction = false;

请注意 aAction< /code> 和 dAction 应该是字符串,但它们实际上是布尔文字。

为什么会发生这种情况?

I'm trying to assign a string literal to a variable using a ternary operator with the following code in the pre block:

texta = "approve";
textd = "deny";
aAction = texta eq "approve" => "true" | "false";
dAction = textd eq "approve" => "true" | "false";

However, this is what comes across in the JavaScript:

var texta = 'approve';
var textd = 'deny';
var aAction = true;
var dAction = false;

Notice that aAction and dAction should be strings, but they are actually boolean literals.

Why is this happening?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

淡看悲欢离合 2024-11-06 13:23:19

将其强制返回字符串的一种方法是使用 beesting:

aActionStr = "#{aAction}";
dActionStr = "#{dAction}";

没有回答为什么会发生这种情况的问题,但这是一种在这种情况下有效的 hack。

One way to force it back into a string is with a beesting:

aActionStr = "#{aAction}";
dActionStr = "#{dAction}";

Doesn't answer the question as to why this happens, but it's a hack that will work in this case.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文