我有一个 URL,我在哈希后对其进行解析。哈希后的内容是一个数学方程式(例如 http://example.com/something#5+1 ),我想找到它的总和(或任何其他方程式的结果,如乘积、除法等)
我可以使用以下方式检索数字:
var url = (window.location.hash).substr(1) // returns "5+1" as a string
虽然我发现如果我尝试将其转换为数字,它实际上并没有进行数学计算。它将它减少到 5,而不是显示 8 的总和。
这种转换是否可能?
谢谢!
最佳答案
不要 eval()
URL 中的任意代码,因为它很容易被 XSS 利用。我创建了一个名为 JSandbox 的库可以在沙箱中执行 JavaScript 代码,但需要 Web Worker 的支持。为 IE 使用假的 worker 支持不是一个好主意,因为这样沙箱的安全性就消失了。
您的代码将如下所示:
JSandbox.eval("with(Math){" + location.hash.substr(1) + "}", function (res) {
// handle the results here
});
也可以使用它来处理错误:
JSandbox.eval("with(Math){" + location.hash.substr(1) + "}", function (res) {
// handle the results here
}, null, function (err) {
// handle errors here
});
我包含了一个 with (Math) { ... }
包装器,因此哈希码可以快速访问 Math 函数。 (例如 abs(..)
而不是 Math.abs(..)
)
关于javascript - 字符串 => JS 中的数字转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1956538/