gpt4 book ai didi

c# - c# 4 中的 DLR 和 Javascript 解释?

转载 作者:太空狗 更新时间:2023-10-30 00:42:48 25 4
gpt4 key购买 nike

我想使用 DLR 从 c# 执行 javascript 代码。

所以我使用c# Jint 写了一个简单的代码 :

  var script = @"
function show( )
{
return parseInt('123asd'); //in js it's 123
};
return show();";

var result = new JintEngine().Run(script);
Console.WriteLine(result);

parseInt('123asd') 在 javascript 中是:123

但我得到的结果是:

enter image description here

  • 也许我看不到全貌,但如果世界另一端的程序员将他的脚本文件发送给我,我(和他)希望结果是一致的!

  • 如果我弄错了,在什么情况下我会使用在 .Net 上运行其他代码? (我将不得不非常非常怀疑每一行代码...)

最佳答案

这似乎是 Jint 的 partseInt 函数的当前行为。

相关代码:

// most common case
double result;
if(double.TryParse(number,NumberStyles.Any, CultureInfo.InvariantCulture, out result)) {
// parseInt(12.42) == 42
return NumberClass.New(sign * Math.Floor(result));
}
else {
return this["NaN"];
}

.NET 的 double.TryParse 不会将 '123asd' 解析为 123,但返回它无法解析整个字符串。

你应该在 Jint 中填写错误报告。

E:这是“标准”的问题。您永远不可能在所有实现中获得 100% 兼容的标准。总会有差异的。看看 IE vs Chrome vs Firefox vs Opera。所有这些都使用不同的 javascript 引擎,因此您可以预料到差异。如果真的要交叉兼容,就应该按照标准来实现,把所有不符合标准的行为都当做实现中的bug。如果您尝试解决此错误或报告它并期望它得到修复,则由您决定。

关于c# - c# 4 中的 DLR 和 Javascript 解释?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13683343/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com